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.