VBA – Escribir en un Archivo de Texto

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on abril 4, 2022

Este tutorial demostrará cómo escribir en archivos de texto utilizando VBA.

Escribir en un archivo de texto

Los siguientes códigos utilizan el FileSystemObject(aprenda más). Para utilizarlo, necesitará establecer una referencia a la biblioteca de tiempo de ejecución del script VB.

Escribir en un nuevo archivo de texto

Con el método CreateTextFile de FileSystemObject puedes crear y luego añadir contenido a un archivo de texto:

Sub FSOCrear_y_Escribir_en_Archivo_de_texto()
    Dim FSO As New FileSystemObject
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set FileToCreate = FSO.CreateTextFile("C:\Carpeta VBA\TestFile.txt")
 
    FileToCreate.Write "Línea de Prueba"
    FileToCreate.Close
 
End Sub

Tenga en cuenta que el contenido no irá entre comillas.

Escribir en un archivo de texto existente

Para escribir en un archivo de texto existente puede utilizar el método OpenTextFile de FileSystemObject con el modo ForWriting.

Sub FSOEscribir_en_Archivo_de_texto()
    Dim FSO As New FileSystemObject
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set FileToWrite = FSO.OpenTextFile("C:\Carpeta VBA\TestFile.txt", ForWriting)
 
    FileToWrite.Write "Línea de Prueba"
    FileToWrite.Close
 
End Sub

Tenga en cuenta que no necesariamente necesita FileSystemObject para escribir en un archivo de texto existente. El ejemplo anterior se muestra de otra manera en este código de abajo (ver otro ejemplo en la sección Rango de Datos a Archivo de Texto):

Sub Escribir_en_Archivo_de_texto()
    Dim FileName As String
    FileName = "C:\Carpeta VBA\TestFile1.txt"
 
    Open FileName For Output As #1
    Print #1, "Línea de Prueba 2"
    Close #1
 
End Sub

Tenga en cuenta que si utiliza el comando Write en lugar de Print, el contenido añadido aparecerá entre comillas. Teniendo ambos comandos en su macro

Write #1, "línea de prueba #1"
Print #1, "línea de prueba #2"

resultará en un archivo de texto como este:

Prueba escribir en archivo

Anexar a un archivo de texto

Cambiando el modo en el código anterior a ForAppending, se puede añadir una línea al final del archivo de texto:

Set FileToWrite = FSO.OpenTextFile("C:\Carpeta VBA\TestFile.txt", ForAppending)

Método WriteLine

Este método añade la cadena de entrada como una línea separada al contenido existente.

Método Write

La cadena de entrada se añade en la misma línea que el contenido existente.

Método WriteBlankLines

Este método toma como parámetro el número de líneas en blanco que se van a escribir en el archivo de texto. El siguiente código ilustra la diferencia entre los diferentes métodos de escritura:

Sub MetodosDeEscritura()
    Dim FSO As New FileSystemObject
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set FileToWrite = FSO.OpenTextFile("C:\Carpeta VBA\TestFile.txt", ForAppending)
 
    FileToWrite.Write "test line #1 "
    FileToWrite.Write "test line #2"
    FileToWrite.WriteBlankLines (3)
    FileToWrite.WriteLine "test line #3"
    FileToWrite.WriteLine "test line #4"
    FileToWrite.Close
 
End Sub

Y el resultado:

Prueba metodos de escritura

 

Rango de datos a archivo de texto

Si quieres dar salida a un rango de datos de tu hoja de cálculo a un archivo de texto, puedes usar este código:

Sub SalidaHaciaArchivoDeTexto()
    Dim FileName As String, LineText As String
    Dim MyRange As Range, i, j
    
    FileName = "C:\Carpeta VBA\ArchivoPrueba.txt" 'puede especificar aquí el nombre del archivo de texto que desea crear
    
    Open FileName For Output As #1
    
    Set MyRange = Range("datos") 'asume que tienes un rango de datos llamado "datos" en tu hoja de cálculo
    For i = 1 To MyRange.Rows.Count
        For j = 1 To MyRange.Columns.Count
            LineText = IIf(j = 1, "", LineText & ",") & MyRange.Cells(i, j) 'el archivo de texto que se crea tendrá un separador de comas
        Next j
        Print #1, LineText 'si utiliza el comando Write en lugar de Print, los datos aparecerán entre comillas en el archivo de texto de salida
    Next i
 
    Close #1
 
End Sub

Array a archivo de texto

También puede guardar su Array de datos en un archivo de texto como este:

Sub GuardarArrayEnArchhivoDeTexto()
    Dim MyArray As Variant
    Dim FSO As New FileSystemObject
    Set FSO = CreateObject("Scripting.FileSystemObject")
 
    MyArray = Array(Array("00", "01"), Array("10", "11"), Array("20", "21"))
 
    Set FileToCreate = FSO.CreateTextFile("C:\Carpeta VBA\Array_a_texto.txt")
 
    For N = 0 To UBound(MyArray)
        FileToCreate.WriteLine MyArray(N)(0) & "," & MyArray(N)(1)
    Next
    
    FileToCreate.Close
 
End Sub
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