Archivo de texto de lectura de VBA (lectura, análisis e importación)

Este tutorial demostrará cómo leer contenido de archivos de texto y pegarlo en hojas de trabajo con VBA.

Leer el contenido del archivo de texto en la hoja de trabajo

La forma más sencilla de leer el contenido de un archivo de texto es copiarlo en la celda de una hoja de trabajo.

123456789101112 Sub FSOPasteTextFileContent ()Atenuar FSO como nuevo FileSystemObjectEstablecer FSO = CreateObject ("Scripting.FileSystemObject")Set FileToRead = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForReading) 'agregue aquí la ruta de su archivo de textoTextString = FileToRead.ReadAllFileToRead.CloseThisWorkbook.Sheets (1) .Range ("A1"). Value = TextString 'puede especificar la hoja de trabajo y la celda donde pegar el contenido del archivo de textoEnd Sub

El código anterior usa FileSystemObject. Para usarlo, deberá establecer una referencia a la biblioteca de tiempo de ejecución de secuencias de comandos de VB. Consulte aquí para obtener más información.

Sin utilizar FileSystemObject, puede pegar el contenido de su archivo de texto con el siguiente código. Si su archivo de texto contiene un separador de línea, se pegará línea por línea.

123456789101112 Sub PasteTextFileContent ()Dim wbExcel como libro de trabajo, wbText como libro de trabajoDim wsExcel como hoja de trabajoEstablecer wbExcel = ThisWorkbook 'especifique aquí en qué archivo de Excel se va a pegar el contenido del archivo de textoEstablecer wsExcel = wbExcel.Sheets (1) 'especifique aquí qué hoja de trabajo usarEstablecer wbText = Workbooks.Open ("C: \ Test \ TestFile.txt") 'agregue aquí la ruta de su archivo de textowbText.Sheets (1) .Cells.Copy wsExcel.CellswbText.Close SaveChanges: = FalsoEnd Sub

Leer el contenido del archivo de texto línea por línea, columna por columna

Su archivo de texto puede tener varias filas y varios elementos enumerados en las filas separadas por coma, punto y coma, tabulación, espacio, etc. Para leer y pegar el contenido del archivo de texto correctamente, es posible que necesite este código a continuación:

1234567891011121314151617181920212223242526 Sub PasteTextFileContentWithSeparators ()Dim StrLine como cadenaAtenuar FSO como nuevo FileSystemObjectAtenuar TSO como objetoDim StrLineElements como varianteDim Index As LongDim i tan largoDim Delimiter as StringEstablecer FSO = CreateObject ("Scripting.FileSystemObject")Establecer TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Delimiter = "," 'el delimitador que se usa en su archivo de textoÍndice = 1Hacer mientras TSO.AtEndOfStream = FalseStrLine = TSO.ReadLineStrLineElements = Dividir (StrLine, Delimitador)Para i = LBound (StrLineElements) a UBound (StrLineElements)Celdas (Índice, i + 1) .Value = StrLineElements (i) 'este código comenzará a pegar el contenido del archivo de texto de la celda A1 (Celda (1,1)) de la hoja de trabajo activaSiguiente yoÍndice = Índice + 1CírculoTSO.CerrarEnd Sub

El delimitador que se utiliza en su archivo de texto puede ser coma (","), coma con espacio (","), punto y coma (";"), punto y coma con espacio (";"), espacio (""), tabulación (cambie luego Delimiter = vbTab) o, en raras ocasiones, cualquier otro carácter.

Leer archivos de texto en matrices

Si necesita leer el contenido de su archivo de texto en una matriz y pegarlo línea por línea, columna por columna en su hoja de trabajo, necesitará este código a continuación:

12345678910111213141516171819202122232425262728293031323334 Sub ReadDelimitedTextFileIntoArray ()Delimitador de atenuación como cadenaDim TextFile como enteroDim FilePath como cadenaDim FileContent como cadenaDim LineArray () como cadenaDim DataArray () como cadenaDim TempArray () como cadenaDim rw As Long, col As LongDelimiter = vbTab 'el delimitador que se usa en su archivo de textoFilePath = "C: \ Test \ TestFileTab.txt"rw = 1TextFile = FreeFileAbrir FilePath para ingresar como TextFileFileContent = Entrada (LOF (TextFile), TextFile)Cerrar TextFileLineArray () = Split (FileContent, vbNewLine) 'cambie vbNewLine a vbCrLf o vbLf dependiendo del separador de línea que se use en su archivo de textoPara x = LBound (LineArray) a UBound (LineArray)Si Len (Trim (LineArray (x))) 0 EntoncesTempArray = Dividir (LineArray (x), Delimitador)col = UBound (TempArray)ReDim Preserve DataArray (col, rw)Para y = LBound (TempArray) a UBound (TempArray)DataArray (y, rw) = TempArray (y)Celdas (x + 1, y + 1) .Value = DataArray (y, rw) 'este código comenzará a pegar el contenido del archivo de texto de la celda A1 (Celda (1,1)) de la hoja de trabajo activaPróximo añoTerminara sirw = rw + 1Siguiente xEnd Sub

Los separadores de línea en su archivo de texto pueden ser una combinación de retorno de carro y salto de línea (Chr (13) + Chr (10)) o salto de línea (Chr (10)). Utilice vbCrLf o vbLf, según corresponda. Si no está seguro, use vbNewLine para indicar el separador de línea.

wave wave wave wave wave