Importar datos de una BD Access a Excel
Hola a todos, el siguiente post es uno de los que me ayudo para realizar un trabajo de la universidad, lo encuentro bastante sencillo y útil, la idea es importar la data de una tabla que tenemos en un archivo de Access, y con ayuda de una macros podremos exportar estos datos a nuestra hoja de Excel. Manos a la obra.
- Tenemos creada una BD Access llamada Empleados.mdb ubicada en nuestra unidad C:, este archivo a su vez tiene una tabla llamada Employees (puedes usar el nombre del archivo y de la tabla que sea, en este caso solo es para cuestiones del ejemplo).
- Tambien tenemos abierto el Excel y previamente hemos dado algunas libertades en la seguridad para la ejecución de Macros, para esto nos dirigimos a Herramientas / Macro / Seguridad, y elegimo el nivel de seguridad “Medio”, luego Aceptar.
- Habilitamos la barra de herramientas de “Formulario” para poder sacar un boton, crear la macro y ejecutarla cada vez que presionamos en ese botón.
- Al crear el boton en nuestra hoja de Excel, se abrirá una ventan llamada “Asignar Macro”, ahi ecribimos el nombre de nuestra Macro, para nuestro caso le llamaron ImportarAccess y luego le damos en Nuevo.
- Se abrirá una ventana de Visual Basic donde veremos escrito dos líneas de código “SubImportarAccess()” y “End Sub”.
- Dentro de esas dos líneas de código pegamos el siguiente script, el cual hará el trabajo de la conexión y la importación de la data.
‘dimensiones
Dim datConnection As ADODB.Connection
Dim recSet As ADODB.Recordset
Dim strDB, strSQL As String
Dim strTabla As String
Dim lngTablas As Long
Dim i As Long
‘elegir uno de estas dos rutas al archivo Access
’strDB = ThisWorkbook.Path & “\” & “db.mdb”
strDB = “C:\Empleados.mdb” ’si en otra carpeta
‘nombre de la tabla del archivo Access
strTabla = “Employees“
‘crear la conexión
Set datConnection = New ADODB.Connection
Set recSet = New ADODB.Recordset
datConnection.Open “Provider=Microsoft.Jet.OLEDB.4.0;” & _
“Data Source =” & strDB & “;”
‘consulta SQL
strSQL = “SELECT * FROM ” & strTabla & ““
recSet.Open strSQL, datConnection
‘copiar datos a la hoja
ActiveSheet.Cells(2, 1).CopyFromRecordset recSet
‘copiar rótulos
lngCampos = recSet.Fields.Count
For i = 0 To lngCampos – 1
ActiveSheet.Cells(1, i + 1).Value = recSet.Fields(i).Name
Next
‘desconectar
recSet.Close: Set recSet = Nothing
datConnection.Close: Set datConnection = Nothing
- Antes de probarlo debemos hacer lo siguiente, en la misma ventana de Visual Basic nos vamos a Herramientas / Referencias, buscamos la opción “Microsoft ActiveX Data Objects 2.8 Library” le damos check y luego Aceptar.
- Cerramos la ventana de Visual Basic, la cual nos llevará nuevamente a nuestra hoja de Excel, y listo solo nos queda probar la Macro dándole click al botón creado anteriormente.
- Veremos que la data de la BD de Access se importa a nuestra hoja.

Hola!
Super útil la información
Pero tengo un problema medio tonto que no sé como solucionar.
En mi archivo.mdb tengo una tabla que se llama “Story Shears” y quiero copiar esa tabla, el problema es que cuando ejecuto la macro, me sale que no se encuentra la tabla “Story” como si no considerara el resto del nombre, y si le cambio el nombre a la tabla por “Story” a secas, la macro corre muy bien, pero la idea es que el usuario no tenga que cambiar los nombres de las tablas puesto que éstas están exportadas de un programa de cálculo estructural ajeno al usuario.
No sé como puedo solucionar este pequeño, pero gran problema, espero que alguien pueda ayudarme ^_^
Ojalá se haya entendido
Enviame tus archivos a mi correo zipeados por favor y veré como puedo ayudarte..
santiagovirus@gmail.com
Jesarella:
El problema es que veo es que tienes un espacio en blanco entre las dos palabras del nombre de tu tabla, podrías llamar a tu tabla: Story_Shears, StoryShears, etc., sin espacios. Intentalo