El siguiente código me permite trabajar con Excel 2007 y Access 2007 extrayendo información mediante una consulta SQL.
Sub ImportarDesdeAccess()
Dim conexion As Object
Dim consulta As String
Dim cadenaConexion As String
Dim cadenaConexionSHM As String
Dim contador As Integer
Set conexion = CreateObject("ADODB.connection")
Sheets.Add.Name = "MULTIEM"
Range("A1").Select
'Set cnna = CurrentProject.Connection
cadenaConexion = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\Srvmultiem\mgalpon\BODEGA-DSK\A2020\INGRESOS2020.mdb"
consulta = "SELECT a.FOLIO, a.[ESTADO DATOS],e.[CODIGO REL], MAX(b.ITEM) AS [NRO DE ITEM], SUM(b.CANTIDAD) AS CANTIDAD, SUM(ROUND((b.CANTIDAD*b.PRECIO)+0.000001,2)) AS [TOTAL VALOR] FROM DETALLEMOVIMIENTO AS b, CABECERAMOVIMIENTO AS a, CLIENTENV AS e WHERE a.[TIPO DOCUMENTO] = 6 And a.[TIPO DOCUMENTO]= b.[TIPO DOCUMENTO] And a.FOLIO = b.FOLIO And a.CLIENTE = e.RUT GROUP BY a.FOLIO, a.[ESTADO DATOS], a.CLIENTE, e.[CODIGO REL];"
conexion.Open cadenaConexion
Set Recordset = conexion.Execute(consulta)
columnas = Recordset.Fields.Count
For I = 0 To columnas - 1
Cells(1, I + 1) = Recordset.Fields(I).Name
Next I
'Pegamos los datos de la tabla en la nueva hoja
Recordset.MoveFirst
Range("A2").CopyFromRecordset Recordset
'Damos formato a las columnas, ajustando contenidos
Recordset.Close
Set Recordset = Nothing
conexion.Close
Set conexion = Nothing
End Sub
Ahora el detalle es trabajar desde Excel 2016 y Access 2007.
Buscando información intente reemplazar "Microsoft.ACE.OLEDB.12.0" por "Microsoft.Jet.OLEDB.4.0", previamente activando los registros siguientes registros:
Hola a tod@s.
El siguiente código me permite trabajar con Excel 2007 y Access 2007 extrayendo información mediante una consulta SQL.
Sub ImportarDesdeAccess() Dim conexion As Object Dim consulta As String Dim cadenaConexion As String Dim cadenaConexionSHM As String Dim contador As Integer Set conexion = CreateObject("ADODB.connection") Sheets.Add.Name = "MULTIEM" Range("A1").Select 'Set cnna = CurrentProject.Connection cadenaConexion = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\Srvmultiem\mgalpon\BODEGA-DSK\A2020\INGRESOS2020.mdb" consulta = "SELECT a.FOLIO, a.[ESTADO DATOS],e.[CODIGO REL], MAX(b.ITEM) AS [NRO DE ITEM], SUM(b.CANTIDAD) AS CANTIDAD, SUM(ROUND((b.CANTIDAD*b.PRECIO)+0.000001,2)) AS [TOTAL VALOR] FROM DETALLEMOVIMIENTO AS b, CABECERAMOVIMIENTO AS a, CLIENTENV AS e WHERE a.[TIPO DOCUMENTO] = 6 And a.[TIPO DOCUMENTO]= b.[TIPO DOCUMENTO] And a.FOLIO = b.FOLIO And a.CLIENTE = e.RUT GROUP BY a.FOLIO, a.[ESTADO DATOS], a.CLIENTE, e.[CODIGO REL];" conexion.Open cadenaConexion Set Recordset = conexion.Execute(consulta) columnas = Recordset.Fields.Count For I = 0 To columnas - 1 Cells(1, I + 1) = Recordset.Fields(I).Name Next I 'Pegamos los datos de la tabla en la nueva hoja Recordset.MoveFirst Range("A2").CopyFromRecordset Recordset 'Damos formato a las columnas, ajustando contenidos Recordset.Close Set Recordset = Nothing conexion.Close Set conexion = Nothing End Sub
Ahora el detalle es trabajar desde Excel 2016 y Access 2007.
Buscando información intente reemplazar "Microsoft.ACE.OLEDB.12.0" por "Microsoft.Jet.OLEDB.4.0", previamente activando los registros siguientes registros:
Me guie de la siguiente pagina web
https://excelsignum.com/2014/02/27/conectar-base-de-datos-de-access-accdb-con-excel-utilizando-herramienta-olebd/
Sin embargo, no he podido conectarme a Access 2007 desde Excel 2016.
Es que realmente no es posible o estoy omitiendo algo?
Saludos