Archivo

Archive for the ‘VBA’ Category

Importar datos de una BD Access a Excel

julio 29, 2009 23 comentarios

090428_access_excelHola 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.
Anuncios