Leer Archivo de Texto (Leer, Analizar e Importar)
Written by
Reviewed by
In this Article
Este tutorial demostrará cómo leer el contenido de los archivos de texto y pegarlo en las hojas de trabajo con VBA.
Leer el Contenido de un Archivo de Texto en una Hoja de Cálculo
La forma más sencilla de leer el contenido de un archivo de texto es copiarlo en una celda de la hoja de cálculo.
Sub FSOPasteTextFileContent()
Dim FSO As New FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject")
Set FileToRead = FSO.OpenTextFile("C:\Test\TestFile.txt", ForReading) 'añada aquí la ruta de su archivo de texto
TextString = FileToRead.ReadAll
FileToRead.Close
ThisWorkbook.Sheets(1).Range("A1").Value = TextString 'puede especificar la hoja de trabajo y la celda donde pegar el contenido del archivo de texto
End Sub
El código anterior utiliza el FileSystemObject. Para utilizarlo, tendrá que establecer una referencia a VB script run-time. Véase here para más información. Sin usar 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íneas, se pegará línea por línea.
Sub PasteTextFileContent ()
Dim wbExcel As Workbook, wbText As Workbook
Dim wsExcel As Worksheet
Set wbExcel = ThisWorkbook 'especifique aquí en qué archivo de Excel debe pegarse el contenido del archivo de texto
Set wsExcel = wbExcel.Sheets(1) 'especifique aquí qué hoja de cálculo utilizar
Set wbText = Workbooks.Open("C:\Test\TestFile.txt") 'añada aquí la ruta de su archivo de texto
wbText.Sheets(1).Cells.Copy wsExcel.Cells
wbText.Close SaveChanges:=False
End Sub
Leer el Contenido de un Archivo de Texto Línea por Línea, Columna por Columna
Su archivo de texto puede tener varias filas y varios elementos listados en las filas separados por coma, punto y coma, tabulador, espacio, etc. Para leer y pegar correctamente el contenido del archivo de texto, puede necesitar este código:
Sub PasteTextFileContentWithSeparators()
Dim StrLine As String
Dim FSO As New FileSystemObject
Dim TSO as Object
Dim StrLineElements As Variant
Dim Index As Long Dim i As Long
Dim Delimiter as String
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TSO = FSO.OpenTextFile("C:\Test\TestFile.txt")
Delimiter=", " 'el delimitador que se utiliza en su archivo de texto
Index = 1
Do While TSO.AtEndOfStream = False
StrLine = TSO.ReadLine
StrLineElements = Split(StrLine, Delimiter)
For i = LBound(StrLineElements) To UBound(StrLineElements)
Cells(Index, i + 1).Value = StrLineElements(i) 'este código comenzará a pegar el contenido del archivo de texto desde la celda A1 (Cell(1,1)) de la hoja de cálculo activa
Next i
Index = Index + 1
Loop
TSO.Close
End Sub
El delimitador que se utiliza en su archivo de texto puede ser la coma («,»), la coma con espacio («, «), el punto y coma («;»), el punto y coma con espacio («; «), el espacio (» «), el tabulador (cambie entonces Delimitador = vbTab) o en casos raros cualquier otro carácter.
Leer Archivos de Texto en Matrices
Si necesita leer el contenido de su archivo de texto en un array y pegarlo línea por línea, columna por columna en su hoja de cálculo, necesitará este código:
Sub ReadDelimitedTextFileIntoArray()
Dim Delimiter As String
Dim TextFile As Integer
Dim FilePath As String
Dim FileContent As String
Dim LineArray() As String
Dim DataArray() As String
Dim TempArray() As String
Dim rw As Long, col As Long
Delimiter = vbTab 'el delimitador que se utiliza en su archivo de texto
FilePath = "C:\Test\TestFileTab.txt"
rw = 1
TextFile = FreeFile
Open FilePath For Input As TextFile
FileContent = Input(LOF(TextFile), TextFile)
Close TextFile
LineArray() = Split(FileContent, vbNewLine) 'cambiar vbNewLine a vbCrLf o vbLf dependiendo del separador de línea que se utilice en su archivo de texto
For x = LBound(LineArray) To UBound(LineArray)
If Len(Trim(LineArray(x))) <> 0 Then
TempArray = Split(LineArray(x), Delimiter)
col = UBound(TempArray)
ReDim Preserve DataArray(col, rw)
For y = LBound(TempArray) To UBound(TempArray)
DataArray(y, rw) = TempArray(y)
Cells(x + 1, y + 1).Value = DataArray(y, rw) 'este código comenzará a pegar el contenido del archivo de texto desde la celda A1 (Cell(1,1)) de la hoja de cálculo activa
Next y
End If
rw = rw + 1
Next x
End 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 un salto de línea (Chr(10)). Utilice vbCrLf o vbLf, según corresponda. Si no está seguro, utilice vbNewLine para indicar el separador de líneas.