Este tutorial demostrará cómo leer el contenido de los archivos de texto línea por línea con VBA.
Podemos leer el archivo de texto como un archivo completo o línea por línea.
Leer archivo de texto línea por línea
El texto de un archivo de texto suele estar formado por varias líneas, separadas por delimitadores. Estos pueden ser una coma (","), una coma con espacio (","), un punto y coma (";"), un punto y coma con espacio (";"), un espacio (""), una tabulación (vbTab ) o, en raras ocasiones, cualquier otro carácter como una tilde (~). Las líneas normalmente están separadas por un salto de línea (vbCRLF).
La forma más fácil de leer un archivo de texto línea por línea en nuestra Hoja de trabajo en VBA es seleccionar la primera celda donde queremos que se coloque el texto y luego ejecutar el siguiente código:
1234567891011 | Sub ReadFile ()Dim strFile como cadena, strLine como cadenastrFile = "C: \ Test \ TestFile.txt"Abra strFile para la entrada como n. ° 1Hacer hasta EOF (1)Entrada de línea n. ° 1, strLineActiveCell = strLineActiveCell.Offset (1, 0) .SeleccionarCírculoCerrar # 1End Sub |
Esto colocará cada línea del archivo de texto en una sola celda en Excel.
También podemos leer un archivo de texto en VBA usando FileSystemObject. En el siguiente código, hemos utilizado el enlace tardío con el objeto del sistema de archivos. También puede crear una referencia a él en su proyecto de VBA. Consulte aquí para obtener más información.
123456789101112131415 | Sub ReadTextFile ()Dim strLine como cadenaAtenuar FSO como objetoAtenuar TSO como objetoEstablecer FSO = CreateObject ("Scripting.FileSystemObject")Establecer TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Hacer mientras no TSO.strLine = TSO.ReadLineActiveCell = strLineActiveCell.Offset (1, 0) .SeleccionarCírculoTSO.CerrarEstablecer TSO = NadaEstablecer FSO = NadaEnd Sub |
Podemos crear un bucle un poco más complicado si queremos separar las líneas en celdas por sus delimitadores. Aquí hemos utilizado el enlace temprano en el código y declarado el objeto del sistema de archivos.
123456789101112131415161718192021222324 | Sub ReadTextFileWithSeparators ()Dim StrLine como cadenaAtenuar FSO como nuevo FileSystemObjectAtenuar TSO como objetoDim StrLineElements como varianteDim Index As LongDim i tan largoDelimitador de atenuación como cadenaEstablecer FSO = CreateObject ("Scripting.FileSystemObject")Establecer TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Delimitador = ","Índice = 1Hacer mientras TSO.AtEndOfStream = FalseStrLine = TSO.ReadLineStrLineElements = Dividir (StrLine, Delimitador)Para i = LBound (StrLineElements) a UBound (StrLineElements)Celdas (índice, i + 1) .Valor = StrLineElements (i)Siguiente yoÍndice = Índice + 1CírculoTSO.CerrarEstablecer TSO = NadaEstablecer FSO = NadaEnd Sub |
Esto dará como resultado que las líneas se separen en celdas individuales en Excel según el gráfico a continuación.