Saltar al contenido

Acceder a Access version anterior


Recommended Posts

publicado

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:

conectar-access-con-excel-mediante-oledb

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

 

 

 

publicado

Estimado, creo que estás confundiendo la versión de Access que uno en su ordenador con el tipo de archivo creado. En Access, desde el 2007, se usa de forma predeterminada el tipo *.accdb, antes se usaba el *.mdb (que a su vez tiene varios "tipos"). Dicho eso ¿quieres conectarte a un archivo *.accdb? De ser así, no podrás con Microsoft.Jet.OLEDB.4.0, sigue usando Microsoft.ACE.OLEDB.12.0 tal como, al menos aparentemente, ya estás haciendo.

publicado
Hace 1 hora, avalencia dijo:

Estimado, creo que estás confundiendo la versión de Access que uno en su ordenador con el tipo de archivo creado. En Access, desde el 2007, se usa de forma predeterminada el tipo *.accdb, antes se usaba el *.mdb (que a su vez tiene varios "tipos"). Dicho eso ¿quieres conectarte a un archivo *.accdb? De ser así, no podrás con Microsoft.Jet.OLEDB.4.0, sigue usando Microsoft.ACE.OLEDB.12.0 tal como, al menos aparentemente, ya estás haciendo.

Hola @avalencia, gracias por tu respuesta.

En realidad la base de datos a la que me conecto de mi PC al servidor esta en versión access 97 (el programador es super reacio en mantenerse en esa versión ?) .

image.thumb.png.cf94b0273a12ff3028e3ad922d531121.png

Sin embargo, desde mi PC que tengo access 2007 puedo acceder al servidor y ver la base de datos así:

image.thumb.png.48a46c6666b8683daed2588a50fea197.png

 En *.mdb, mas no puedo abrirla, pero si puedo extraer información con la macro que publique.

Disculpa, por no explicar al detalle sobre la versión de access al cual intento acceder con Excel 2016 y respondiendo a la pregunta, quiero conectarme o extraer información de excel 2016 en access *.mdb.

Saludos.

publicado

 

Hola @avalencia

Bueno, descargue el instalador luego hice la prueba en excel 2007, la macro de la pagina web permite la conexion aunque esa macro es la exportacion de excel a access y yo necesitaba la exportacion de access a excel, pero bueno, no me muestra ningun error en la conexion. Intente hacer lo mismo en excel 2016 y no ha resultado al parecer por un tema de referencias. 

Sospecho que tener ambas versiones de excel 2007 y 2016 en la misma PC genera conflicto, quiero suponer que sea el caso, desinstalare el excel 2007 , reinstalare el excel 2016 nuevamente y vere que pasa; y te cuento.

Saludos.

publicado

Ah, cierto, me equivoqué de enlace, pero, lo importante es que ya logras la conexión; para importar los datos a tu Excel desde el Access, con la macro en Excel claro, no habrá dilema solo era cuestión que uses lo mismo de tu primera macro ya que básicamente lo que cambia es el proveedor. Ah, sobre las referencias, usa para cualquier Excel la de "Microsoft ActiveX Data Objects x.xx Library", no son necesariamente obligatorias otras. Ojo que sí se puede tener Excel 2007 y 2016 juntos. 

publicado
En 10/10/2020 at 3:12 , avalencia dijo:

Ah, cierto, me equivoqué de enlace, pero, lo importante es que ya logras la conexión; para importar los datos a tu Excel desde el Access, con la macro en Excel claro, no habrá dilema solo era cuestión que uses lo mismo de tu primera macro ya que básicamente lo que cambia es el proveedor. Ah, sobre las referencias, usa para cualquier Excel la de "Microsoft ActiveX Data Objects x.xx Library", no son necesariamente obligatorias otras. Ojo que sí se puede tener Excel 2007 y 2016 juntos. 

Hola @avalencia

Te cuento que ya pude resolver la conexion de Excel 2016 a Access 2007 (con formato .*mdb).

El detalle era la version del Excel, yo tenia Excel 2016 (v.64 bits) y la base de datos que estaba en el servidor es Access 97 (v.32 bits). Al parecer Access 2007 con formato *.mdb y Access 97 no hay v.64 bits. Tuve que instalar el Excel 2016 v.32bits. Luego instalar Microsoft Access Database Engine 2016 Redistributable v.32bits y en la macro reemplazar Microsoft.ACE.OLEDB.12.0 por Microsoft.Jet.OLEDB.4.0 sin tocar nada en "Referencias".

Mencionado lo anterior doy por terminado el tema

Saludos

publicado

Hola estimado, en realidad sí había una forma de hacerlo, pero necesariamente tenías que tener los dos controladores "AccessDatabaseEngine "(32 y 64 bits) instalados en una misma PC y para su registro/instalación usar el método "Passive" lo que, en mi experiencia, hoy en día no es tan conocido. Finalmente lo importantes es que ya no tienes dilemas. Saludos.

publicado
Hace 3 horas, avalencia dijo:

Hola estimado, en realidad sí había una forma de hacerlo, pero necesariamente tenías que tener los dos controladores "AccessDatabaseEngine "(32 y 64 bits) instalados en una misma PC y para su registro/instalación usar el método "Passive" lo que, en mi experiencia, hoy en día no es tan conocido. Finalmente lo importantes es que ya no tienes dilemas. Saludos.

Hola @avalencia

Por favor me describes ese proceso por que si bien he logrado en mi PC ahora tengo que hacer lo mismo en otras PC de mis colegas que tienen instalado Excel 2016 v.64 bits.

Cuando mencionas "AccessDatabaseEngine (32 y 64 bits)", en realidad si lo he intentado instalando ambas versiones. Los instale por "cmd" de manera silenciosa (/quiet) ya que directamente no me permitia. Aun asi instalados ambas versiones 64 y 32 bits no podia tener una conexion con Microsoft.Jet.OLEDB.4.0, por lo que me intriga cuando mencionas el método "Passive" saber de que se trata.

Saludos

publicado
Hace 18 horas, avalencia dijo:

Dale una leida a esto:

Enlace

Hola @avalencia

Te cuento que después de todo tuve inconvenientes instalando ambas versiones "AccessDatabaseEngine "(32 y 64 bits) en Excel 2016 v.64bits al inicio todo estaba operando con normalidad luego desconozco que paso que no era posible la conexión. Sin embargo, encontre la solucion en el siguiente enlace:

https://stackoverflow.com/questions/1991643/microsoft-jet-oledb-4-0-provider-is-not-registered-on-the-local-machine/1992009#1992009

Ahi encontre la solución. Desinstale todos las versiones de" redistribuible del motor de base de datos de Microsoft Access 2016" v32 y v64 bits respectivamente. Luego instale redistribuible del motor de base de datos de Microsoft Access 2010 v64 bits ya que tengo Excel 2016 v64. Hice todas las pruebas y ahora si puedo conectarme a las versiones *.mdb sin problemas. Tambien tuve que corregir en la macro Microsoft.Jet.OLEDB.4.0 por Microsoft.ACE.OLEDB.12.0 y en "Referencias" no toque nada.

Por si a alguien le sirva es lo que a mí me ha funcionado

Saludos

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.