VBA - Escribir en archivo de texto

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

Escribir en un archivo de texto

Los siguientes códigos utilizan el FileSystemObject. Para usarlo, deberá establecer una referencia a la biblioteca de tiempo de ejecución de secuencias de comandos de VB.

Escribir en un archivo de texto nuevo

Con el CreateTextFile método de FileSystemObject puede crear y luego agregar contenido a un archivo de texto:

123456789 Sub FSOCreateAndWriteToTextFile ()Atenuar FSO como nuevo FileSystemObjectEstablecer FSO = CreateObject ("Scripting.FileSystemObject")Establecer FileToCreate = FSO.CreateTextFile ("C: \ Test \ TestFile.txt")FileToCreate.Write "línea de prueba"FileToCreate.CloseEnd Sub

Tenga en cuenta que el contenido no se incluirá entre comillas.

Escribir en un archivo de texto existente

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

123456789 Sub FSOWriteToTextFile ()Atenuar FSO como nuevo FileSystemObjectEstablecer FSO = CreateObject ("Scripting.FileSystemObject")Establecer FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForWriting)FileToWrite.Write "línea de prueba"FileToWrite.CloseEnd Sub

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

123456789 Sub WriteToTextFile ()Dim FileName como cadenaFileName = "C: \ Test \ TestFile.txt"Abra FileName para la salida como n. ° 1Imprimir n. ° 1, "línea de prueba"Cerrar # 1End Sub

Tenga en cuenta que si usa el comando Escribir en lugar de Imprimir, el contenido agregado estará entre comillas. Tener ambos comandos en tu macro

12 Escriba el n. ° 1, "línea de prueba n. ° 1"Imprimir n. ° 1, "línea de prueba n. ° 2"

resultará en un archivo de texto como este:

Programación VBA | ¡Code Generator funciona para usted!

Agregar al archivo de texto

Al cambiar el modo en el código anterior a ForAppending, se puede agregar una línea al final del archivo de texto:

1 Establecer FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForAppending)

Método WriteLine

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

Método de escritura

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

¿Cansado de buscar ejemplos de código VBA? ¡Prueba AutoMacro!

WriteBlankLines

Este método toma como parámetro el número de líneas en blanco que se escribirán en el archivo de texto.

Este código a continuación ilustra la diferencia entre los diferentes métodos de escritura:

12345678910111213 Sub WriteMethods ()Atenuar FSO como nuevo FileSystemObjectEstablecer FSO = CreateObject ("Scripting.FileSystemObject")Establecer FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForAppending)FileToWrite.Write "línea de prueba n. ° 1"FileToWrite.Write "línea de prueba n. ° 2"FileToWrite.WriteBlankLines (3)FileToWrite.WriteLine "línea de prueba n. ° 3"FileToWrite.WriteLine "línea de prueba n. ° 4"FileToWrite.CloseEnd Sub

Y el resultado:

Programación VBA | ¡Code Generator funciona para usted!

Rango de datos a archivo de texto

Si desea generar un rango de datos de su hoja de trabajo a un archivo de texto, puede usar este código:

12345678910111213141516171819 Sub OutputToTextFile ()Dim FileName como cadena, LineText como cadenaAtenuar MyRange como rango, i, jFileName = "C: \ Test \ TestFile.txt" 'puede especificar aquí el nombre del archivo de texto que desea crearAbra FileName para la salida como n. ° 1Establecer MyRange = Range ("datos") 'asume que tiene un rango de datos llamado "datos" en su hoja de trabajoPara i = 1 a MyRange.Rows.CountPara j = 1 a MyRange.Columns.CountLineText = IIf (j = 1, "", LineText & ",") & MyRange.Cells (i, j) 'el archivo de texto que se crea tendrá un separador de comaSiguiente jPrint # 1, LineText 'usando el comando Write en lugar de Print dará como resultado que sus datos estén entre comillas en el archivo de texto de salidaSiguiente yoCerrar # 1End Sub

Matriz a archivo de texto

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

12345678910111213141516 Sub SaveArrayToTextFile ()Atenuar MyArray como varianteAtenuar FSO como nuevo FileSystemObjectEstablecer FSO = CreateObject ("Scripting.FileSystemObject")MyArray = Array (Array ("00", "01"), Array ("10", "11"), Array ("20", "21"))Establecer FileToCreate = FSO.CreateTextFile ("C: \ Test \ TestFile.txt")Para n = 0 a UBound (MyArray)FileToCreate.WriteLine MyArray (n) (0) & "," & MyArray (n) (1)próximoFileToCreate.CloseEnd Sub

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave