VBA文字檔案


還可以讀取Excel檔案,並使用VBA將單元格的內容寫入文字檔案。VBA允許使用者使用兩種方法處理文字檔案 -

  • 檔案系統物件(FSO)
  • 使用Write命令

檔案系統物件(FSO)

顧名思義,FSO物件幫助開發人員使用驅動器,檔案夾和檔案。 在本節中,我們將討論如何使用FSO

編號 物件型別 描述
1 Drive Drive是一個物件。 包含收集有關連線到系統的驅動器的資訊的方法和屬性。
2 Drives Drives是一個集合。 它提供了連線到系統的驅動器的物理或邏輯列表。
3 File File是一個物件。 它包含允許開發人員建立,刪除或移動檔案的方法和屬性。
4 Files Files是一個集合。 它提供了一個檔案夾中包含的所有檔案的列表。
5 Folder Folder是一個物件。 它提供了允許開發人員建立,刪除或移動檔案夾的方法和屬性。
6 Folders Folders是一個集合。 它提供了一個檔案夾內所有檔案夾的列表。
7 TextStream TextStream是一個物件。 它使開發人員能夠讀寫文字檔案。

Drive

Drive 是一個物件,它提供對特定磁碟驅動器或網路共用的屬性的存取。 Drive物件支援以下屬性 -

  • AvailableSpace
  • DriveLetter
  • DriveType
  • FileSystem
  • FreeSpace
  • IsReady
  • Path
  • RootFolder
  • SerialNumber
  • ShareName
  • TotalSize
  • VolumeName

範例

第1步 - 在使用FSO進行指令碼編寫之前,應該啟用Microsoft指令碼執行時。請導航到工具->參照,如以下螢幕截圖所示。

第2步 - 新增「Microsoft指令碼執行時間」,然後單擊確定。

第3步 - 新增想要寫入文字檔案中的資料,這裡新增一個命令按鈕。

第4步 - 現在執行指令碼。

Sub CommandButton1_Click()
   Const ForReading = 1, ForWriting = 2, ForAppending = 3
   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

    ' Create a TextStream.
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set stream = fso.OpenTextFile("F:\worksp\vba\Support.log", ForWriting, True)

   CellData = ""
   ' LastRow = 3
   LastCol = 3
   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檔案的建立方式如下面「F:\worksp\vba」的目錄,如下的截圖所示。

該檔案的內容,如以下螢幕截圖中所示 -

The Value at location (1,1)姓名
The Value at location (1,2)性別
The Value at location (1,3)城市
The Value at location (2,1)張三
The Value at location (2,2)男
The Value at location (2,3)北京
The Value at location (3,1)李四
The Value at location (3,2)男
The Value at location (3,3)北京
The Value at location (4,1)王五
The Value at location (4,2)男
The Value at location (4,3)上海
The Value at location (5,1)李小麗
The Value at location (5,2)女
The Value at location (5,3)深圳
The Value at location (6,1)Linsa
The Value at location (6,2)女
The Value at location (6,3)深圳

Write命令

與FSO不同,不需要新增任何參照,但是,我們將無法使用驅動器,檔案和檔案夾。也能夠將流新增到文字檔案。

範例

Sub CommandButton1_Click()
   Const ForReading = 1, ForWriting = 2, ForAppending = 3
   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 = "F:\worksp\vba\write.txt"
   Open FilePath For Output As #2

   CellData = ""
   LastCol = 3
   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

執行該指令碼時,將在「F:\worksp\vba」位置建立「write.txt」檔案,如以下螢幕截圖所示。

該檔案的內容顯示如以下螢幕截圖 -