Importar tabla de Access a Excel con VBA (imágenes y código)
¿De qué se trata?Este código VBA le ayuda a descargar o importar Acceda a Datos de tabla o consulta a Excel en un clic.¿Por qué?Puede importar datos de tablas de Access a Excel sin ni siquiera abrir la base de datos de Access.Cómo importar datos de tablas de Access a Excel
Paso 1: Abra el libro de Excel y fue al constructor de código VBA (Alt + F11) y Abrir un nuevo módulo.Paso 2: Copie y pegue el siguiente código.
Sub importAccessdata()
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sQRY As String
Dim strFilePath As String
strFilePath = "C:\DatabaseFolder\myDB.accdb" 'Sustituye 'DatabaseFolder' y 'myDB.accdb' por la ruta y el nombre de tu BD
Set cnn = Nueva conexión ADODB.Connection
Set rs = Nuevo ADODB.Recordset
cnn.Open "Proveedor=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & strFilePath & ";"
sQRY = "SELECT * FROM tblData" 'Sustituya 'tblData' por el nombre de la tabla de la base de datos Access o el nombre de la consulta desde la que desea descargar los datos
rs.CursorLocation = adUseClient
rs.Open sQRY, cnn, adOpenStatic, adLockReadOnly
Aplicación.ScreenUpdating = False
Sheet1.Range("A1").CopyFromRecordset rs
rs.Cerrar
Set rs = Nada
cnn.Close
Set cnn = Nada
Salir de Sub
End Sub
Paso 3: Haga clic en el botón Ejecutar o F5 (También puede insertar un botón / forma en la hoja de Excel a continuación, haga clic derecho y asignar esta macro para que se ejecute cada vez).
Los registros de la base de datos Access se han descargado correctamente en Excel. Abra el libro de Excel y compruebe los datos.
Nota: Asegúrese de que 'Microsoft ActiveX Data Objects Library' está activada desde la opción Herramientas – Referencias (número utilizar la última versión [6.1 a partir de este post]).
Pin
Estoy seguro de que trabajas con muchos datos de Excel, MS Access y VBA, por lo que me Fuertemente ¡Le recomendamos que se una a la siguiente Ultimate Excel VBA Userform con base de datos Access! ¡Es una inversión que vale la pena en ti mismo! ¡HAZLO AHORA!
Construya su propio programa del mundo real, aprenda VBA (macros) de Excel real, supere los límites de Excel con un proyecto completo.
8 respuestas
Señor quiero exportar registros de base de datos access a excel usando boton de comando en vb6.0 por favor envieme codigo completo de vb6.0
Tengo la hoja1 en mi excel pero me sale Run-time error 424 en la macro en el siguiente paso, ¿a qué se debe?
Sheet1.Range("A1").CopyFromRecordset rs
Hola , quería comprobar si guardo mi Access DB en la unidad compartida y distribuir esta macro Excel en mi organización, ¿funcionará? Quiero que mi macro Excel lea algunos valores de esta base de datos Access y luego actualice algunas variables al abrir Excel.
También si Access no funciona, si puedo usar otro excel guardado en la organización de una unidad y acceder a él en lugar de DB. He intentado con el método de libro de trabajo abierto en mi macro para leer mi onedrive excel que se comparte a todos en mi empresa, pero no funcionó .
Error de compilación en las líneas 5, 8, 9...
Finalmente lo hice.
estoy utilizando 2 variables (textbox1 como valor 'moneda, formato R$0.000,00' y textbox2 como 'fecha', formato mm/dd/aaaa)
Código ↓
'================================================== ===|
'========================================== Kauê Vaz==|
'================================================== ===|
Opción explícita
' Haga clic en Herramientas, Referencias y seleccione
' Biblioteca Microsoft ActiveX Data Objects 2.0
Sub getDataFromAccess(strValue, strDate)
Dim DBFullName As String
Dim Connect As String, Source As String
Dim Connection As ADODB.Connection
Dim Recordset As ADODB.Recordset
Dim Col As Integer
Dim mySQLVariable As String
Dim mySQLVariable_1 As String
Dim strSQL As String
mySQLVariable = strValue 'Valor de textbox1 (Formato de moneda R$0.000,00)
mySQLVariable_1 = strDate 'Valor de textbox2 (Formato de fecha mm/dd/aaaa)
Código SQL
strSQL = "SELECT * FROM tblBaseDeDatos DONDE "
strSQL = strSQL & " [Valor] = '" & (mySQLVariable) & "' y "
strSQL = strSQL & " [Fecha] = '" & (mySQLVariable_1) & "' "
' Base de datos, seleccione su acceso a la base de datos
DBFullName = "C:\Users\Desktop\Databases\BD_PaynotProcess\bd_PaynotProcess.accdb"
Abrir conexión
Set Connection = Nueva conexión ADODB.Connection
Connect = "Proveedor=Microsoft.ACE.OLEDB.12.0;"
Connect = Connect & "Fuente de datos=" & DBFullName & ";"
Connection.Open ConnectionString:=Conectar
' Crear RecordSet
Set Recordset = Nuevo ADODB.Recordset
Con Recordset
' Búsqueda de valores mediante código SQL variable strSQL
Fuente = strSQL
.FuenteAbierta:=Fuente, ConexiónActiva:=Conexión
' Importando columnas desde Base de Datos.
For Col = 0 To Recordset.Fields.Count - 1
Range("A5").Offset(0, Col).Value = Recordset.Fields(Col).Name
Próximo
' Importando líneas desde Base de Datos.
Range("A5").Offset(1, 0).CopyFromRecordset Recordset
Terminar con
Set Recordset = Nada
Conexión.Cerrar
Establecer conexión =
ActiveSheet.Columns.AutoFit
Subtítulo final
Saludos
¿Puedo importar sólo algunos datos? ¿Filtrar por 2 variables?
Ejemplo:
X = 13/03
Y = '122315124'
¿Traer del bd de acceso sólo las líneas que contienen estas variables?
Me ha funcionado. Muchas gracias.
Esta es la mejor consulta que he visto nunca. ¿Podría por favor ayudar en la adición de una cláusula Where en la declaración sql. He intentado modificar su consulta, pero arroja error.