VBA Excel, escribe en un archivo de texto

En este artículo, explico cómo crear un archivo de texto y cómo escribir datos en un archivo de texto en modo sobrescribir y agregar.

Puede descargar el archivo y el código relacionado con este artículo aquí.

Cree un archivo de texto utilizando el objeto del sistema de archivos:

Puede crear un archivo de texto usando el objeto del sistema de archivos usando el código a continuación.

Sub CreateTextFile()
    Dim fs As Object
    Dim stream As Object

    Set fs = CreateObject("Scripting.FileSystemObject")
    On Error GoTo fileexists
        Set stream = fs.CreateTextFile("e:TextFile.txt", False, True)

fileexists:
        If Err.Number = 58 Then
            MsgBox "File already Exists"
		 'Your code here
        Else
            stream.Write ("No new line character inserted")
            stream.WriteLine ("This will take the cursor to next line.")
            stream.Close
        End If
    On Error GoTo 0
End Sub

La función CreateTextFile toma 3 argumentos.

  1. Primero está el nombre del archivo junto con la ruta completa
  2. Sobrescribir: el segundo argumento (opcional) indica si se puede sobrescribir un archivo existente. El valor es True si el archivo se puede sobrescribir; False si no se puede sobrescribir. El valor predeterminado es falso
  3. Unicode: el tercer argumento (opcional) especifica si el archivo se creó como un archivo Unicode o ASCII. el valor es DÓNDE si el archivo se creó como un archivo Unicode; Falso si se creó como un archivo ASCII. El valor predeterminado es ASCII.

Debido a que especificamos sobrescribir como falso, se genera un error si el archivo ya existe (número de error 58). Asi que estamos utilice el manejo de errores para verificar esta condición.

Podemos usar la función Write y WriteLine para escribir en el archivo. Como puede adivinar, la función WriteLine moverá el cursor a la siguiente línea, mientras que la función Write no lo hará. –


Ejemplo 1, escriba una línea de datos en un archivo de texto:

El siguiente ejemplo crea un archivo de texto en la ubicación "D:Temp" con el nombre "Test.txt" y escribe el valor en la celda A1 en la primera línea del archivo de texto:

Sub Example1()
Open "D:TempTest.txt" For Output As #1
Write #1, Cells(1, 1)
Close #1
End Sub

La primera línea comprueba si existe el archivo "D:TempTest.txt". Si se no creará un archivo llamado "Test.txt" en la ubicación "D:Temp". Si se está haciendo exist sobrescribirá el archivo.

Open "D:TempTest.txt" For Output As #1

En nuestro ejemplo, el archivo no existe, por lo que se crea un nuevo archivo:

Excel VBA, Escribir en archivos de texto, Ejemplo 1, Nuevo archivo

Tiene 3 partes:

"D:PruebaTemporal.txt": Especifica la ruta completa del archivo.

Salida: especifica que este archivo está destinado a la escritura. Esto está en desacuerdo con el valor Aporte utilizado en el artículo Excel VBA, lectura de archivos de texto

#1: Puede ser cualquier número entre #1 y #511. Cualquier número que se elija aquí debe usarse en el resto del programa para hacer referencia a este archivo.

La siguiente línea imprime los datos de la celda A1 en la primera línea del archivo de texto:

Write #1, Cells(1, 1)

El contenido de la celda A1 se muestra a continuación:

Excel VBA, escribiendo en archivos de texto, ejemplo 1, celda A1

La última línea de código cierra el archivo con la referencia #1:

Close #1

Si hubiéramos elegido un número diferente al abrir el archivo, deberíamos haber elegido el mismo número aquí al cerrar. Por ejemplo, digamos que decidimos usar el número #4. Deberíamos usar el #4 en todo el código:

Sub Example1()
Open "D:TempTest.txt" For Output As #4
Write #4, Cells(1, 1);
Close #4
End Sub
End Sub

El código anterior produce el mismo resultado que nuestro código original.

Recuerde siempre cerrar el archivo al final de su código. Cerrar el archivo hace lo siguiente:

Resultado final:

Excel VBA, escritura en archivos de texto, ejemplo 1, resultado final


Ejemplo 2, escriba varias líneas de datos en un archivo de texto:

El siguiente ejemplo crea un archivo de texto con el nombre "Test.txt" en la ubicación "D:Temp" y escribe todos los datos en la columna A:

Sub Example2()
Dim flag As Boolean
Dim i As Integer
'open the file for writing
Open "D:TempTest.txt" For Output As #4
flag = True
i = 1
'keeps going until the end of the file is reacheed
While flag = True
    'check if the current cell has data in it
    If Cells(i, 1) <> "" Then
        'write the data to the file
        Write #4, Cells(i, 1)
        'go to next cell
        i = i + 1
    Else
        'if the last row has been reached exit the loop
        flag = False
    End If
Wend
'close the file
Close #4
End Sub

Los siguientes datos están escritos en la columna A:

Excel VBA, escribiendo en un archivo de texto, ejemplo 21

Resultado:

Excel VBA, escribir en archivo de texto, resultado


Ejemplo 3, cuadro de diálogo Guardar archivo:

En el siguiente ejemplo, inicialmente se le pide al usuario que elija la ubicación para el archivo de texto de salida usando un cuadro de diálogo para guardar archivos. A continuación, se crea un archivo de texto y los datos de la columna A se imprimen en el archivo de texto. Consulte los siguientes enlaces para obtener más información sobre los cuadros de diálogo para guardar archivos:

Sub Example3()
Dim flag As Boolean
Dim i As Integer
Dim strPath As String
strPath = Application.GetSaveAsFilename(FileFilter:= _
"Text Files (*.txt), *.txt", Title:="Save Location")
If strPath <> "False" Then
    'open the file for writing
    Open strPath For Output As #4

    flag = True
    i = 1

    'keeps going until the end of the file is reacheed
    While flag = True
        'check if the current cell has data in it
        If Cells(i, 1) <> "" Then
        'write the data to the file
           Write #4, Cells(i, 1)
           'go to next cell
           i = i + 1
        Else
           'if the last row has been reached exit the loop
            flag = False
        End If
    Wend
    'close the file
    Close #4
End If
End Sub

El código resaltado crea un cuadro de diálogo para guardar el archivo y solicita al usuario que seleccione una ubicación para guardar el archivo:

VBA, escribir en archivo de texto, cuadro de diálogo guardar archivo

El resultado final es similar a los ejemplos anteriores.

Sub Example4()
Dim flag As Boolean
Dim i As Integer
Dim strPath As String
On Error GoTo lblError:
strPath = Application.GetSaveAsFilename(FileFilter:= _
"Text Files (*.txt), *.txt", Title:="Save Location")
If strPath <> "False" Then
    'open the file for writing
    Open strPath     For Output As #4
    flag = True
    i = 1
    'keeps going until the end of the file is reached
    While flag = True
        'check if the current cell has data in it
        If Cells(i, 1) <> "" Then
           'write the data to the file
           Write #4, Cells(i, 1)
           'go to next cell
           i = i + 1
        Else
           'if the last row has been reached exit the loop
           flag = False
        End If
    Wend
    'close the file
    Close #4
End If
Exit Sub
lblError:
Err.Clear

Fin sub

Ejemplo 5, utilice la función de impresión en el modo de adición:

Los ejemplos discutidos hasta ahora reescriben el archivo existente. Ahora veamos cómo abrir un archivo en modo anexar. Aquí usaremos la función de impresión para escribir en el archivo. La diferencia es que el texto no está entre comillas dobles.


Sub AppendFile()
    Dim strFile_Path As String
    Dim rangeToWrite As range

    strFile_Path = "e:TextFile.txt"

On Error GoTo cleanup
    Open strFile_Path For Append As #1

    Set rangeToWrite = range("A1:A10")

    For Each cell In rangeToWrite
        Print #1, cell.Value
    Next cell

    Close #1 

Cleanup:
    Close #1 

End Sub

"Abrir archivo para agregar" primero verificará si el archivo existe. Si el archivo no existe, se creará uno nuevo. De lo contrario, el archivo se abrirá en modo de adición.

Usamos la función Imprimir para escribir el texto del archivo de Excel al archivo de texto. Hemos seleccionado una sola columna de Excel. Puede ajustar fácilmente el rango para incluir varias columnas.

Así es como se ven los archivos de Excel y de texto después de ejecutar el código.

archivo de Excel después de ejecutar el código adjunto

Si vuelve a ejecutar el código, el archivo de texto se verá así:

archivo de texto después de agregar

Puede descargar el archivo y el código relacionado con este artículo aquí.

Ver también:

Si necesita ayuda con su código, o si está buscando un programador de VBA para contratar, no dude en ponerse en contacto conmigo. Visite también mi sitio web www.software-solutions-online.com

Su Calificación Nos Ayuda a Mejorar