Importar archivos de texto en Access

Intento importar 100 o más archivos de texto a una simple tabla para access con dos campos, el primer campo para el nombre del archivo y el segundo campo (memo) para el texto que contiene el archivo *.txt.
¿Es esto posible con alguna macro o con algún código?

1 Respuesta

Respuesta
1
Es posible hacerlo, bien desde el mismo Access (editor de Macros), o con un script externo, en VBS (que es el lenguaje que también suan las macros en access).
Yo nunca programo desde Access, así que te explico la segunda.
Necesitas usar dos objetos fundamentalemente:
1. FileSystemObject (FSO). Para abrir los archivos y leer su contenido
2. Activex Data Objects (ADO). Para hacer los updates en la tabla que quieres..
Este ejemplo debería funcionar (pero debes revisarlo, porque no lo he probado y puede haber algún fallillo, más que nada es para que veas como lo haría yo...). Cópialo en un fichero y lo nombras con extensión .vbs, haciendo doble click lo ejecutas:
'------------------------
'PRINCIPO
'------------------------
Dim File, fso, ts
Set fso = CreateObject("Scripting.FileSystemObject")
'en este array metes todos los nombres de archivo, se podria cargar automaticamente con el propio objeto FSO (*.txt)
dim archivos
archivo(0)="primer_archivo.txt"
archivo(1)="segundo_archivo.txt"
'...
'preparo la conexion a la BD
'---------------------------
set conexion = CreateObject("Adodb.connection")
'la linea siguiente supone que previamente has creado un dsn (en panel de control, odbc data sources) que apunta a tu base de datos
'Se puede hacer sin dsn, directamente especificando el archivo MDB, pero no recuerdo la sintaxis
conexion.connectionstring("DSN=DSNdeTuBaseDeDatos")
conexion.open
for i = 0 to ubound(archivos)
'leo el contenido del archivo
Set File = fso.GetFile(archivos(i))
Set ts = File.OpenAsTextStream(ForRead)
Contenido=ts.readall
ts.Close
'grabo en la bd este nombre de archivo,Archivos(i) y su contenido (Contenido)
sql="Insert Into NombreDeTabla (Nombre,Contenido) VALUES ('" & archivos(i) & "','" & contenido &"')"
conexion.execute sql
next
conexion.close
set conexion = Nothing
Set fso = Nothing
Set ts = Nothing
'---------------------
'FIN
'---------------------

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas