Leer Archivo de Texto (Leer, Analizar e Importar)

Written by

Editorial Team

Reviewed by

Steve Rynearson

Last updated on agosto 9, 2022

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.

vba-free-addin

Complemento de Ejemplos de Código de VBA

Acceda fácilmente a todos los ejemplos de código que se encuentran en nuestro sitio.

Simplemente navegue al menú, haga clic y el código se insertará directamente en su módulo. Complemento .xlam.

(¡No se requiere instalación!)

Descarga gratuita

Return to VBA Code Examples