Exportar datos de Excel a Access con VBA (imágenes y código)
¿De qué se trata?
Este código VBA le ayuda a cargar o exportar datos de Excel a Access en un clic.
¿Por qué?
Puede exportar datos de Excel a Access sin siquiera abrir la base de datos de Access.
Cómo exportar datos de Excel a Access
Paso 1: Abra el Sobresalir y vaya al generador de código VBA (Alt + F11) y Abrir un nuevo módulo
.
Paso 2: Copie y pegue el siguiente código.
Const TARGET_DB = "miDB.accdb" Sustituya 'myDB.accdb' por el nombre de su base de datos, asegúrese de que tanto Excel como Access DB están en la misma ruta.
Sub PushTableToAccess()
Dim cnn As ADODB.Connection
Dim MyConn
Dim rst As ADODB.Recordset
Dim i As Long, j As Long
Dim Rw As Long
Hojas("Nombre Hoja").Activar Sustituya el "Nombre de la hoja" por el nombre de su hoja Excel.
Rw = Rango("A65536").Fin(xlUp).Fila
'Dar a su hoja de Excel de datos Rango
Set cnn = Nueva conexión ADODB.Connection
MyConn = ThisWorkbook.Path & Application.PathSeparator & TARGET_DB
Con cnn
.Provider = "Microsoft.ACE.OLEDB.12.0"
Abrir MyConn
Terminar con
Sustituya "tblMyExcelUpload" por el nombre de su tabla en Access.
Set rst = Nuevo ADODB.Recordset
rst.CursorLocation = adUseServer
rst.Open Source:="tblMyExcelUpload", ActiveConnection:=cnn, _
CursorType:=adOpenDynamic, LockType:=adLockOptimistic, _
Opciones:=adCmdTable
'Cargar todos los registros de Excel a Access.
Para i = 2 a Rw
rst.AddNew
Para j = 1 a 7
rst(Celdas(1, j).Valor) = Celdas(i, j).Valor
Siguiente j
rst.Actualizar
Siguiente i
' Cerrar la conexión
rst.Cerrar
cnn.Close
Set rst = Nada
Set cnn = Nada
Subtítulo final
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). Ya ha finalizado la carga. Los registros de Excel se han cargado correctamente en Access, abra su tabla de Access DB y compruebe los datos.
Nota: Asegúrese de que 'Microsoft ActiveX Data Objects Library' está activada desde el Herramientas - Referencias (número utilizar la última versión [6.1 a partir de este post]).
Pin
8 respuestas
Hola a todos;
¿Deben coincidir estas dos rutas para que funcione la conexión ADODBC? Es decir, ThisWorkbook.Path y Target_DB.
Mando desde arriba:
ThisWorkbook.Path & Application.PathSeparator & TARGET_DB
O, puede el Workbook.Path ser decir
"C:\MyExcelFiles\MyWorkbook.xlsx" & la base de datos de Access TARGET_DB estar en
¿"C:\MyDataBases\MyAccessDB.accdb"?
Mi código funciona cuando tanto el Excel WorkBook y Access DB residen en la misma carpeta, pero cuando están en diferentes carpetas (estructura de la biblioteca organizada correctamente, el código falla en el punto .Open MyConn.
Gracias a todos,
Mario,
Hola
¿Cómo se establece la contraseña?
Tanques
rst(Celdas(1, j).Valor) = Celdas(i, j).Valor
el código se rompe aquí
----
Error 3265
No se encuentra el artículo en la colección correspondiente al nombre u ordinal solicitado
----
¿Cómo se vería el código si tengo la hoja de cálculo y la base de datos en diferentes ubicaciones?
Hola,
mi código se ejecuta hasta que
Hojas("Nombre Hoja").Activar
He seleccionado la hoja, pero no ocurre nada más.
¿Podría aconsejarme?
Gracias
Pruebe Worksheets("Yoursheet").Activate
¿Existe algún comando único para cargar los datos como (Range.CopyFromRecordset)?
Hola Krishnan, no estoy seguro, déjame explorar y te pondré al día.