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

第2步:添加「Microsoft Scripting RunTime」,然後單擊確定。

Excel

第3步:添加數據,將它寫入一個文本文件,並添加一個命令按鈕。

Excel

第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

該文件的內容也被顯示如下:

Excel

使用寫命令

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

該文件的內容也被顯示如下:

Excel