Importar datos mediante código desde excel a acees

Quisiera poner el código en un botón en un formulario, para importar datos desde excel de una ruta especifica y nombre especifico, los anexe a una tabla existente
EJ 1 hay una tabla en access llamada PAGOS con los siguientes campos fecha, egreso, valor_girado, ¿concepto 2.En el escritorio hay una archivo de excel llamado giros con los mismos campos de la tabla de access? Fecha, egreso, etc
Lo que busco y espero me puedas ayudar con el código: es con el botón en el formulario importe automáticamente los datos de la tabla de excel sin tener que preguntar la ubicación del archivo ni los datos a importar
adrezco me puedas colaborar

1 respuesta

Respuesta
2
Para realizar lo que pides debes tener en cuenta una serie de condiciones:
- Los datos del Excel deben estar en la primera pestaña, y las cabeceras de la primera fila deben ser los nombres de los campos. Si no fuera así habría que modificar en algo el código que te paso
- El código te lo pongo como ejemplo, pero tú debes cambiarlo. Te explicaré cómo más abajo
- Te recomiendo que hagas las pruebas en una copia de tu BD porque se van a cambiar datos en tus tablas. Si algo sale mal...
El proceso que debes hacer es el siguiente:
1.- En tu formulario de control, o si no creas un formulario en blanco, añades un botón de comando. Sacas sus propiedades y en el evento "Al hacer click" le generas el siguiente código (si no sabes cómo se hace eso me lo comentas y te lo explico):
...
Private Sub ...
Dim XlsRuta As String
Dim miSql As String
'Indicamos la ruta del Excel
XlsRuta = "c:\rutadelexcel\NombreExcel.xlsx"
'Importamos la hoja de cálculo a la tabla TExcel
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel7, "TExcel", XlsRuta, True
'Definimos la consulta de datos anexados
miSql = "INSERT INTO Tabla1 (Campo1, Campo2)"
miSql = miSql & " SELECT TExcel.Campo1, TExcel.Campo2 FROM TExcel"
'Ejecutamos la consulta
DoCmd.SetWarnings False
DoCmd.RunSQL (miSql)
DoCmd.SetWarnings True
'Borramos la tabla TExcel
DoCmd.DeleteObject acTable, "TExcel"
'Lanzamos un mensaje de que todo ha ido bien
MsgBox "Datos anexados correctamente", vbInformation, "OK"
End Sub
...
2.- Realizas las siguientes modificaciones en el código:
- XlsRuta = debes escribir la ruta donde esta tu Excel, con el nombre de archivo y la extensión
- En la definición de miSql debes cambiar "Tabla1" por el nombre de la tabla donde quieras anexar los datos. Debes cambiar Campo1, Campo2 por los nombres de los campos que tienes en tu tabla. Evidentemente, si tienes más campos los vas añadiendo. Por ejemplo, deberías escribir:
miSql = "INSERT INTO miTabla (fecha, egreso, valor_girado, ...)"
- En la segunda parte de la definición de miSql debes hacer lo mismo. Es decir, deberías escribir:
miSql = miSql & " SELECT TExcel.fecha, TExcel.egreso, TExcel.valor_girado, ... FROM TExcel"
3.- El proceso te crea una tabla que se llama TExcel donde se realiza la importación. A continuación anexa los datos de esa tabla a tu tabla original y finalmente borra TExcel.
A ver si consigues hacer que funcione ;)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas