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í.
Indice de artículo
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.
Primero está el nombre del archivo junto con la ruta completa
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
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.
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:
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:
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:
Almacena los datos escritos en el archivo.
Esto permite que otros programas modifiquen el archivo.
Si el archivo no está cerrado, no puede volver a abrirlo con un índice numérico diferente.
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:
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:
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.
Si vuelve a ejecutar el código, el archivo de texto se verá así:
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