VBA - Archivos de texto
También puede leer el archivo de Excel y escribir el contenido de la celda en un archivo de texto usando VBA. VBA permite a los usuarios trabajar con archivos de texto utilizando dos métodos:
- Objeto del sistema de archivos
- usando el comando de escritura
Objeto de sistema de archivos (FSO)
Como sugiere el nombre, los FSO ayudan a los desarrolladores a trabajar con unidades, carpetas y archivos. En esta sección, analizaremos cómo utilizar un FSO.
No Señor. | Tipo de objeto y descripción |
---|---|
1 | Drive Drive es un objeto. Contiene métodos y propiedades que le permiten recopilar información sobre una unidad conectada al sistema. |
2 | Drives Drives es una colección. Proporciona una lista de las unidades conectadas al sistema, ya sea física o lógicamente. |
3 | File El archivo es un objeto. Contiene métodos y propiedades que permiten a los desarrolladores crear, eliminar o mover un archivo. |
4 | Files Archivos es una colección. Proporciona una lista de todos los archivos contenidos en una carpeta. |
5 | Folder La carpeta es un objeto. Proporciona métodos y propiedades que permiten a los desarrolladores crear, eliminar o mover carpetas. |
6 | Folders Folders es una colección. Proporciona una lista de todas las carpetas dentro de una carpeta. |
7 | TextStream TextStream es un objeto. Permite a los desarrolladores leer y escribir archivos de texto. |
Conducir
Drivees un objeto que proporciona acceso a las propiedades de una unidad de disco o un recurso compartido de red en particular. Las siguientes propiedades son compatibles conDrive objeto -
- AvailableSpace
- DriveLetter
- DriveType
- FileSystem
- FreeSpace
- IsReady
- Path
- RootFolder
- SerialNumber
- ShareName
- TotalSize
- VolumeName
Ejemplo
Step 1- Antes de continuar con la creación de scripts con FSO, debemos habilitar Microsoft Scripting Runtime. Para hacer lo mismo, vaya a Herramientas → Referencias como se muestra en la siguiente captura de pantalla.
Step 2 - Agregue "Microsoft Scripting RunTime" y haga clic en Aceptar.
Step 3 - Agregue los datos que le gustaría escribir en un archivo de texto y agregue un botón de comando.
Step 4 - Ahora es el momento de la escritura.
Private Sub fn_write_to_text_Click()
Dim FilePath As String
Dim CellData As String
Dim LastCol As Long
Dim LastRow As Long
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Dim stream As TextStream
LastCol = ActiveSheet.UsedRange.Columns.Count
LastRow = ActiveSheet.UsedRange.Rows.Count
' Create a TextStream.
Set stream = fso.OpenTextFile("D:\Try\Support.log", ForWriting, True)
CellData = ""
For i = 1 To LastRow
For j = 1 To LastCol
CellData = Trim(ActiveCell(i, j).Value)
stream.WriteLine "The Value at location (" & i & "," & j & ")" & CellData
Next j
Next i
stream.Close
MsgBox ("Job Done")
End Sub
Salida
Al ejecutar el script, asegúrese de colocar el cursor en la primera celda de la hoja de trabajo. El archivo Support.log se crea como se muestra en la siguiente captura de pantalla en "D: \ Try".
El contenido del archivo se muestra en la siguiente captura de pantalla.
Comando de escritura
A diferencia de FSO, NO necesitamos agregar ninguna referencia, sin embargo, NO podremos trabajar con unidades, archivos y carpetas. Podremos simplemente agregar la secuencia al archivo de texto.
Ejemplo
Private Sub fn_write_to_text_Click()
Dim FilePath As String
Dim CellData As String
Dim LastCol As Long
Dim LastRow As Long
LastCol = ActiveSheet.UsedRange.Columns.Count
LastRow = ActiveSheet.UsedRange.Rows.Count
FilePath = "D:\Try\write.txt"
Open FilePath For Output As #2
CellData = ""
For i = 1 To LastRow
For j = 1 To LastCol
CellData = "The Value at location (" & i & "," & j & ")" & Trim(ActiveCell(i, j).Value)
Write #2, CellData
Next j
Next i
Close #2
MsgBox ("Job Done")
End Sub
Salida
Al ejecutar el script, el archivo "write.txt" se crea en la ubicación "D: \ Try" como se muestra en la siguiente captura de pantalla.
El contenido del archivo se muestra en la siguiente captura de pantalla.