VBA - 文本文件



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

  • 文件系统对象
  • 使用 Write 命令

文件系统对象 (FSO)

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

序号 对象类型和描述
1

驱动器

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

2

驱动器列表

驱动器列表是一个集合。它提供连接到系统的驱动器列表,无论是物理的还是逻辑的。

3

文件

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

4

文件列表

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

5

文件夹

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

6

文件夹列表

文件夹列表是一个集合。它提供文件夹内所有文件夹的列表。

7

文本流

文本流是一个对象。它使开发人员能够读取和写入文本文件。

驱动器

驱动器是一个对象,它提供对特定磁盘驱动器或网络共享的属性的访问。驱动器对象支持以下属性:

  • 可用空间
  • 驱动器盘符
  • 驱动器类型
  • 文件系统
  • 空闲空间
  • 就绪状态
  • 路径
  • 根文件夹
  • 序列号
  • 共享名称
  • 总大小
  • 卷标

示例

步骤 1 - 在继续使用 FSO 进行脚本编写之前,我们应该启用 Microsoft Scripting Runtime。为此,请导航到“工具”→“引用”,如下面的屏幕截图所示。

Excel FSO in VBScript

步骤 2 - 添加“Microsoft Scripting RunTime”并单击“确定”。

Excel FSO in VBScript

步骤 3 - 添加要写入文本文件中的数据并添加一个命令按钮。

Excel FSO in VBScript

步骤 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”下创建,如下面的屏幕截图所示。

Excel FSO in VBScript

文件内容如下面的屏幕截图所示。

Excel FSO in VBScript

Write 命令

与 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

输出

执行脚本后,将在“D:\Try”位置创建“write.txt”文件,如下面的屏幕截图所示。

Excel FSO in VBScript

文件内容如下面的屏幕截图所示。

Excel FSO in VBScript
广告