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 SubLa 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.
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.
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