位置:首頁 > 高級語言 > VBA教學 > 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