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.