Bueno Cacho, estaba cantado lo que habia que hacer
Código vb:
Ver originalSheets(Hoja).Cells(f + 1, c + 1).Value = rst.Fields(c)
Ahora el codigo para hacer consultas a una bd access desde excel
Código vb:
Ver originalSub consultar_AlHacerClic()
Call Ejecutar("Select * From Maestro", "Hoja2")
'Call Ejecutar("Select * From Maestro", "Hoja2")
End Sub
Sub Ejecutar(Sql As String, Hoja As String)
Dim cn As Object
' crea un objeto Connection
Set cn = CreateObject("ADODB.Connection")
' IMPORTANTE: Indicar la cadena de conexión a usar
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data " & _
"Source=D:\Documents & Settings\wasmadr\" & _
"Escritorio\practica 2011\bd1.mdb;Persist Security Info=False"
' verifica que los parámetros no estén vacios
If Sql <> vbNullString And Hoja <> vbNullString Then
' variable para al rec de ado
Dim rst As Object
' abre la conexión a la base de datos
cn.Open
' crea un nuevo objeto recordset
Set rst = CreateObject("ADODB.Recordset")
' Ejecuta el sql para llenar el recordset
rst.Open Sql, cn, 1, 3
' variables para los indices de las filas y columnas
c = 0
f = 0
' recorre las columnas, añade el nombre del campo al encabezado
For i = 0 To rst.Fields.Count - 1
'Sheets(Hoja).Range(Chr(i + 65) & f + 1).Value = rst.Fields(i).Name
Sheets(Hoja).Range(Chr(c + 65) & f + 1).Value = rst.Fields(c)
Sheets(Hoja).Cells(f + 1, i + 1).Value = rst.Fields(i).Name
Next
f = f + 1
' recorre todo el recordset hasta el final
Do While Not rst.EOF
' recorre los campos en el registro actual del recordset para recuperar el dato
For i = 0 To rst.Fields.Count - 1
' añade el valor a la celda
'Sheets(Hoja).Range(Chr(c + 65) & f + 1).Value = rst.Fields(c)
Sheets(Hoja).Cells(f + 1, c + 1).Value = rst.Fields(c)
c = c + 1
Next
' resetea el indice de las columnas
c = 0
' Referencia al registro actual (incrementa )
f = f + 1
' Siguiente registro
rst.MoveNext
Loop
' cierra y descarga las referencias
On Error Resume Next
rst.Close
cn.Close
Set cn = Nothing
Set rst = Nothing
End If
End Sub