VBA – Leer Archivo de Texto Línea por Línea

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on diciembre 21, 2022

Este tutorial demostrará cómo leer contenido de 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 en un archivo de texto generalmente está compuesto 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 (» «), un tabulador (vbTab) o en casos raros cualquier otro carácter como una tilde (~). Las líneas se separan normalmente con un salto de línea (vbCRLF).

La forma más sencilla de leer un fichero de texto línea a línea en nuestra Hoja de Cálculo en VBA es seleccionar la primera celda donde queremos que se ponga el texto, y a continuación ejecutar el siguiente código:

Sub LeerArchivo()
   Dim strFile As String, strLine As String
   strFile = "C:\Carpeta VBA\TextFile.txt"
   Open strFile For Input As #1
   Do Until EOF(1)
      Line Input #1, strLine
      ActiveCell = strLine
      ActiveCell.Offset(1, 0).Select
   Loop
   Close #1
End Sub

Esto pondrá cada línea del archivo de texto en una sola celda en Excel.

Resultado Leer Archivo

También podemos leer un archivo de texto en VBA utilizando el FileSystemObject. En el siguiente código hemos utilizado la vinculación tardía con el Objeto Sistema de Archivo. También puedes crear una referencia a él en tu proyecto VBA. Vea aquí para más información.

Sub LeerArchivoDeTexto()
  Dim strLine As String
  Dim FSO As Object
  Dim TSO As Object
  Set FSO = CreateObject("Scripting.FileSystemObject")
  Set TSO = FSO.OpenTextFile("C:\Carpeta VBA\TextFile.txt")
  Do While Not TSO.AtEndOfStream
     strLine = TSO.ReadLine
     ActiveCell = strLine
     ActiveCell.Offset(1, 0).Select
  Loop
  TSO.Close
  Set TSO = Nothing
  Set FSO = Nothing
End Sub

Podemos crear un bucle un poco más complicado si queremos separar las líneas en celdas por sus delimitadores. Aquí hemos utilizado la vinculación anticipada en el código y declarado el Objeto Sistema de Archivos.

Sub LeerArchivoDeTextoConSeparadores()
  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:\Carpeta VBA\TextFile.txt")
  Delimiter = ";"
  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)
    Next i
    Index = Index + 1
  Loop
  TSO.Close
  Set TSO = Nothing
  Set FSO = Nothing
End Sub

Esto hará que las líneas se separen en celdas individuales en Excel como se muestra en el siguiente gráfico.

Resultado Leer Archivo De Texto con Separadores

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