VBA文本文件 - VBA教程

VBA文本文件

我们可以读取Excel文件,并写入单元格中的内容到一个文本文件。这样一来,VBA允许用户使用文本文件的工作。我们可以测试文件使用工作的两种方法

  • 文件系统对象

  • 使用Write命令

使用文件系统对象(FSO)

正如其名称所说的,FSO对象帮助开发者使用驱动器,文件夹和文件的工作。在本节中,我们将讨论如何使用FSO。

对象类型 描述
Drive 驱动器是一个对象。包含的方法和属性,收集关于连接到系统的驱动器的信息
Drives 硬盘是一个集合。它提供了连接到系统,无论是物理或逻辑的驱动器的列表。
File 文件是一个对象。它包含的方法和属性,使开发人员能够创建,删除或移动文件。
Files 文件是一个集合。它提供了包含在文件夹内的所有文件的列表。
Folder 文件夹是一个对象。它提供的方法和属性,使开发人员能够创建,删除或移动文件夹。
Folders 文件夹是一个集合。它提供了一个文件夹内的所有文件夹列表。
TextStream 文本流是一个对象。它使开发人员能够读取和写入文本文件。

驱动器

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

  • AvailableSpace

  • DriveLetter

  • DriveType

  • FileSystem

  • FreeSpace

  • IsReady

  • Path

  • RootFolder

  • SerialNumber

  • ShareName

  • TotalSize

  • VolumeName

例子

第1步:在继续使用FSO脚本,我们应该使Microsoft脚本运行。做同样,导航到"Tools" >> "References" ,如下图所示:

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

使用写命令

不像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