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 |