Buen día:Tengo el siguiente código VBA en una hoja de excel el cual me permite conectarme usando ADODB a una base de datos de Access e importar datos de una Tabla especifica:
Private Sub ActualizarCajas_Click()
Dim oConexion As ADODB.Connection
Dim rsTabla As ADODB.Recordset
Dim fld As Object
Dim sNombreTabla As String
Dim sNombreAccess As String
Dim i As Integer
strHoja = ActiveSheet.Name
filasaborrar = Sheets(strHoja).Range("A3").End(xlDown).Row
Sheets(strHoja).Range("A3", "E" & filasaborrar) = clearConntent
sNombreAccess = "C:\DICCIONARIO\EMPLEADOS.accdb"
If sNombreAccess <> "" Then
sNombreTabla = "Listado_CCF+CtaContable"
Set oConexion = New ADODB.Connection
oConexion.CursorLocation = adUseClient
oConexion.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & sNombreAccess & ";Persist Security Info=False;"
Set rsTabla = New ADODB.Recordset
rsTabla.Open "Select NroHum, NombreRegTbl, NitCaj, CodigoCaj, CuentasTer From [" & sNombreTabla & "]", _
oConexion, _
adOpenStatic
For i = 0 To rsTabla.Fields.Count - 1
ActiveSheet.Cells(2, i + 1).Value = rsTabla.Fields(i).Name
ActiveSheet.Cells(2, i + 1).Font.Bold = True
ActiveSheet.Cells(2, i + 1).HorizontalAlignment = xlCenter
Next
fila = 3
columna = 1
While Not rsTabla.EOF
For Each fld In rsTabla.Fields
ActiveSheet.Cells(fila, columna) = Trim(fld.Value)
columna = columna + 1
Next
columna = 1
fila = fila + 1
rsTabla.MoveNext
Wend
columnasajustar = Sheets(strHoja).Range("A1").End(xlDown).Row
Range("A1:E" & columnasajustar).EntireColumn.AutoFit
rsTabla.Close
oConexion.Close
Set rsTabla = Nothing
Set oConexion = Nothing
End If
End Sub
Este código funciona perfectamente si a la variable sNombreTabla le asigno el nombre de una tabla, pero al asignarle el nombre de una consulta, que en este caso es "Listado_CCF+CtaContable" no extrae ningún dato a la hoja de Excel.
Podrían por favor indicarme que le hace falta para que me funcione ya sea con el nombre de una Tabla o una Consulta?? Muchísimas gracias.