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
廣告