Datos, datos, datos: sin ellos, una base de datos sería prácticamente inútil. Por eso, no sorprende que una de las preguntas más frecuentes sobre cómo importar datos a tus tablas de Access sea: ¿cómo puedo simplificar la importación de muchísimos archivos con regularidad? Al ser una tarea tan común, existen varias maneras de hacerlo, pero aquí nos centraremos en una, en mi opinión la más sencilla, sobre todo si lo haces con frecuencia o incluso con una periodicidad programada. Un poco de planificación (¡y digo un poco!) y algo de magia VBA, y listo. Sigue leyendo para empezar…
Importar todos los archivos de Excel en una carpeta
Para este artículo, veremos la importación de varios archivos de Excel dentro de una carpeta determinada, pero podría importar fácilmente archivos csv, etc., en breve discutiremos cómo cambiar el código para manejar archivos csv.
En primer lugar, definamos qué queremos que haga el código:
"Queremos importar todos los archivos de una carpeta determinada a una tabla existente; también queremos especificar si los archivos tienen una línea de encabezado o no"
Parece bastante simple, así que veamos el código para hacer esto:
Sub ImportfromPath(path As String, intoTable As String, hasHeader As Boolean) Dim fileName As String 'Loop through the folder & import each file fileName = Dir(path & "\*.xls") While fileName <> "" DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, intoTable, path & fileName, hasHeader 'check whether there are any more files to import fileName = Dir() Wend End Sub
Comprobando problemas…

OK, lo primero es lo primero. Para mantener el código lo más utilizable posible en diferentes circunstancias, estamos solicitando el nombre de la ruta (donde se almacenan los archivos), el nombre de la tabla en la que desea importar estos archivos y si los archivos de esta carpeta tienen todos un encabezado o no (es decir, los nombres de los campos aparecen en la primera fila de la hoja de cálculo).
Notará que la parte del código que busca archivos - Dir (ruta & “\ *. Xls”) - agrega un comodín y una extensión de archivo a la ruta proporcionada. Menciono esto porque sería muy fácil modificar el código si, por ejemplo, solo quisiera importar archivos que coincidan con una convención de nomenclatura en particular (por ejemplo, todos los archivos que tienen "enero" o "2017" como parte del nombre del archivo ). Si quisiera, podría incluso agregar ese filtro como parámetro a la llamada de subrutina.
De todos modos, si un archivo coincide con los criterios dados (cualquier archivo ".xls" en la carpeta que usa en este caso), inmediatamente intenta importar ese archivo usando el comando TransferSpreadsheet.
Dónde cambiar el código para adaptarlo a sus necesidades ...
Es en este punto que puede modificar el código para que, en lugar de importar una hoja de cálculo, importe archivos csv (utilizando el comando "TransferirTexto"), etc.
El código luego se repite hasta que no hay más archivos para importar en esa carpeta.
Es un pequeño fragmento de código, pero seguro que lo usarás una y otra vez.
Introducción del autor:
Mitchell Pond es un experto en recuperación de datos en DataNumen, Inc., que es el líder mundial en tecnologías de recuperación de datos, incluyendo reparar la corrupción de SQL y productos de software de recuperación de Excel. Para más información visite www.datanumen.com