VBA - 文本文件

您还可以阅读Excel文件,并使用VBA将单元格的内容写入文本文件. VBA允许用户使用两种方法处理文本文件 :

  • 文件系统对象

  • 使用Write命令

文件系统对象(FSO)

顾名思义,FSO帮助开发人员使用驱动器,文件夹和文件.在本节中,我们将讨论如何使用FSO.

Sr.No.对象类型&描述
1

Drive

云端硬盘是一个对象.包含允许您收集有关连接到系统的驱动器的信息的方法和属性.

2

Drives

驱动器是一个集合.它提供了物理或逻辑连接到系统的驱动器列表.

3

File

文件是一个对象.它包含允许开发人员创建,删除或移动文件的方法和属性.

4

Files

文件是一个集合.它提供了文件夹中包含的所有文件的列表.

5

Folder

文件夹是一个对象.它提供了允许开发人员创建,删除或移动文件夹的方法和属性.

6

Folders

文件夹是一个集合.它提供了文件夹中所有文件夹的列表.

7

TextStream

TextStream是一个Object.它使开发人员能够读写文本文件.

驱动器

驱动器是一个对象,可以访问特定磁盘驱动器或网络共享的属性. 云端硬盘对象&减号支持以下属性;

  • AvailableSpace

  • DriveLetter

  • DriveType

  • 文件系统

  • FreeSpace

  • IsReady

  • 路径

  • RootFolder

  • SerialNumber

  • ShareName

  • TotalSize

  • VolumeName

示例

第1步 : 在继续使用FSO编写脚本之前,我们应该启用Microsoft Scripting Runtime.要做同样的事情,请导航到Tools → 引用如下面的屏幕截图所示.

VBScript中的Excel FSO

第2步 : 添加"Microsoft Scripting RunTime"并单击"确定".

VBScript中的Excel FSO

第3步 : 添加要在文本文件中写入的数据并添加命令按钮.

VBScript中的Excel FSO

第4步 : 现在是脚本的时候了.

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


输出

执行脚本时,请确保将光标放在工作表的第一个单元格中. Support.log文件创建如下面的屏幕截图"D:\Try"下所示.

 VBScript中的Excel FSO

该文件的内容显示在以下屏幕截图中.

VBScript中的Excel FSO

写入命令

与FSO不同,我们不需要添加任何引用,但是,我们将无法工作与驱动器,文件和文件夹.我们将只能将流添加到文本文件中.

示例

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


输出

执行脚本时,"write.txt "文件在位置"D:\Try"中创建,如以下屏幕截图所示.

Excel VBScript中的FSO

该文件的内容显示在以下屏幕截图中.

VBScript中的Excel FSO