Importar Hoja Excel a Access con VBA

He leído varias cosas en Internet al respecto, pero no consigo implementarlo en el trabajo para que de los resultados esperados.

Necesito crear un botón, que al pulsarlo desde una base de datos Access, importe una hoja Excel que se encuentra en una dirección específica.

El código que se encuentra por Internet comenta algo de ADO pero no comprendo muy bien como funciona ya que cuando lo he probado no puedo ejecutarlo debido a un error.

1 respuesta

Respuesta
3

Nunca se me dió el caso, pero encontré un sencillo código que hace lo que buscas.

1) Crea una base de datos nueva

2) Crea una tabla con nombre "ImportarXLS"

3) Crea un Formulario con nombre "FormularioImportar" y genera un botón

4) Para el evento "Al hacer click" genera el siguiente código. Es el código para todo el formulario, el botón tiene como nombre "importar"

Option Compare Database
Dim Var As String
Dim ruta, tabla, hoja As String
Private Sub importar_Click()
    ' Variables
    ruta = "C:\excel\importar.xls"
    tabla = "ImportarXLS"
    hoja = "Hoja1!"
    ' borrar contenido del cursor
    Var = "drop table " & tabla
    EjecutaVar
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, tabla, ruta, True, hoja
    'DoCmd.TransferSpreadsheet acImport, 8, tabla, ruta, True, hoja
End Sub
Sub EjecutaVar()
    With DoCmd
         .SetWarnings False
         .RunSQL Var
         .SetWarnings True
    End With
End Sub

y listo.

Una explicación rápida del código:

Primero generamos las variables globales.

En el evento CLICK del botón "importar" tenemos la ruta del archivo que vamos a importar, ha de ser la ruta completa en nuestro equipo, la tabla sobre la que vamos a importar y la hoja del excel que vamos a importar.

Ejecutamos un SQL para borrar por completo la tabla sobre la que vamos a importar, ya que los campos han de ser exactos. Si no borramos y los campos están correctamente en la tabla y el excel añade todos los registros del excel.

Aquí viene la clave del asunto:

DoCmd. TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, tabla, ruta, True, hoja

Esta es la línea que nos importa los datos. Creo que es sencilla de entender, solo tienen que estar los datos tabla, ruta y hoja correctamente.

Espero que sea suficiente, si tienes alguna duda ya sabes donde ando.

Muchas gracias por la rapidez en la respuesta y la buena solución. 

La verdad que funciona cómo necesitaba y sin problemas.

Muchas gracias, y hasta la próxima.

Un Saludo

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas