Archivos de Texto

Tengo un archivo plano txt, el cual contiene una serie de registros, y sus campos se encuentran separados por ";" (punto y coma). Necesito modificar ese archivo de modo que cada campo est'he separado por tabuladores; es decir, hacer de forma autom'ática la transformación que se hace en Excel al abrir un archivo de texto delimitado por tabulaciones.
¿Sera qué alguien me puede echar una manito?

1 respuesta

Respuesta
1
Si lo único que quieres es cargar el archivo y reemplazar los ";" por tabuladores, te recomiendo esto:
Tienes que incluir la librería "Microsoft Scripting Runtime" en Proyecto->Referencias.
Dim FSO as New Scripting.FileSystemObject
Dim TS as Scripting.TextStream
Dim Txt as String
Set TS=FSO.OpenTextFile("c:\ruta\archivo.ext",ForReading)
Txt=TS.ReadAll()
Txt=Replace(Txt,";",vbTab)
TS.Close
Set TS=Nothing
Con eso, en "Txt" tendrás todo el contenido del archivo, pero con tabuladores en lugar de ";"
Hola.
Gracias por tu ayuda...
Creo que con eso es suficiente.
Una preguntita.. si quisiera modificar una columna completa de datos (o eliminar), recuerda que el archivo de texto muestra el contenido de una serie de registros existentes; ¿Cómo haría?
En un archivo de texto plano, como el que obtienes de esta manera, la única manera de borrar una línea es reescribir todas las que están por debajo de ella una línea más arriba. Sé que no es una solución muy elegante, pero...
La cosa sería así:
' Quiero borrar la línea 4
dim s as string
p=1
do while not TextStream.AtEndOfStream
if p<>4 then
s=s & TextStream.ReadLine()
end if
p=p+1
loop
Entonces en 's' tienes todas las líneas menos la 4, así que con guardar el contenido de la variable de nuevo en el TextStream, cerrándolo y abriéndolo de nuevo para escritura, conseguirías el efecto deseado.
Para modificar, el sistema sería idéntico.
Si lo que quieres es manipular una base de datos almacenada en texto, hay un controlador ODBC para este tipo de información ("Microsoft Text Driver (*.txt,*.csv)"), aunque nunca lo he probado. Lo que sé es que no permite SQL.
Me equivoqué, sí que permite SQL. Para conectarte con una base de datos de texto, tienes que poner sólo el directorio donde estén los archivos de texto. Luego puedes hacer consultas, considerando los nombres de los archivos como tablas:
conexion.Open "driver={Microsoft Text Driver (*.txt; *.csv)};dbq=c:\temp"
Recordset. Open "select * from libro1.csv", conexion
Parece que funciona

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas