Excel VBA 程式設計教學:檔案輸入與輸出

附加方式寫入檔案

當我們用 Output 模式寫入一個已經存在的檔案時,如果檔案中存在有舊的內容的話,在寫入之後就會將舊的內容覆蓋掉,若想要保留舊資料,並增加一些內容接在原本資料的後方,就可以用附加的方式(append)寫入檔案,最典型的使用情境就是將程式輸出訊息寫入記錄檔。

若要以附加方式寫入檔案,只要將開檔的模式改為 Append 即可,以下是一個簡單的範例:

Dim OutputFilePath As String
Dim Content As String

OutputFilePath = "C:ExcelDemodemo_output.txt"

' 建立文字檔
Open OutputFilePath For Output As #2
Content = "This is a test."
Print #2, Content
Close #2

' 附加方式寫入檔案
Open OutputFilePath For Append As #3
Content = "This is another test."
Print #3, Content
Close #3

執行之後,demo_output.txt 的內容如下:

寫入檔案的內容

VBA 的開檔模式除了 InputOutputAppend 之外,還有用於二進位檔案的 Binary 模式,以及用於隨機存取的 Random 模式,不過另外這兩種一般人比較少用,就不介紹了,有興趣的人請參考 MSDN 的說明

自動選擇檔案代碼

如果要使用程式自動開啟多個檔案,不想使用手動指定檔案代碼的話,可以使用 FreeFile 這個函數自動取得可用的檔案代碼,以下是一個簡單的使用範例:

Dim FileCount As Integer
Dim FileNumber As Integer
Dim FileName As String

 ' 使用迴圈自動寫入 5 個檔案
For FileCount = 1 To 5

  ' 自動取得檔案代碼
  FileNumber = FreeFile()

  ' 檔案名稱
  FileName = "C:ExcelDemodemo_output_" & FileCount & ".txt"

  ' 開啟檔案
  Open FileName For Output As #FileNumber

  ' 寫入檔案
  Print #FileNumber, "Hello, World"

  ' 關閉檔案
  Close #FileNumber

Next FileCount

這個範例會自動寫入五個檔案,程式設計者不需要檢查可用的檔案代碼,在較複雜的程式中,建議使用這種方式,可以避免不小心造成檔案代碼衝突的問題。

應用範例

寫入 CSV 檔案

CSV 檔案就是每個欄位以逗點分隔的檔案,以下是將 Excel 表格的資料寫入 CSV 檔的範例,假設我們的 Excel 檔案中有一張向這樣的表格:

Excel 表格

若要在 VBA 中將這個表格的資料直接寫成一個 CSV 檔,可以這樣寫:

Dim ColNum As Integer
Dim Line As String
Dim LineValues() As Variant
Dim OutputFileNum As Integer
Dim PathName As String
Dim RowNum As Integer
Dim SheetValues() As Variant

' 取得目前 Excel 檔的儲存路徑
PathName = Application.ActiveWorkbook.Path

' 自動取得檔案代碼
OutputFileNum = FreeFile

' 在同樣路徑下,開啟一個 demo_output.csv 檔
Open PathName & "demo_output.csv" For Output As #OutputFileNum

' 取得 Excel 表格內的資料
SheetValues = Sheets("工作表1").Range("A1:C6").Value

' 動態調整陣列大小
ReDim LineValues(1 To 3)

For RowNum = 1 To 5
  For ColNum = 1 To 3
    ' 把 Excel 資料表的一列資料放進陣列中
    LineValues(ColNum) = SheetValues(RowNum, ColNum)
  Next

  ' 將陣列中的資料以逗號連接起來
  Line = Join(LineValues, ",")

  ' 將 CSV 資料寫入檔案
  Print #OutputFileNum, Line
Next

' 關閉檔案
Close #OutputFileNum

產生的 CSV 檔若用記事本開啟,即可看到其原始的資料:

記事本開啟 CSV 檔

而若使用 Excel 來開啟 CSV 檔,就會直接以表格的方式呈現:

Excel 開啟 CSV 檔

更多關於 VBA 的教學文章,請參考 VBA 程式設計

參考資料:Home & LearntutorialspointExcel Easy

Page: 1 2

G. T. Wang

個人使用 Linux 經驗長達十餘年,樂於分享各種自由軟體技術與實作文章。

Share
Published by
G. T. Wang
標籤: ExcelOfficeVBA

Recent Posts

[DIY] 自製凡士林火種

這裡介紹如何利用簡單的凡士林與...

3 年 ago

[DIY] 自製火影木葉、砂忍者村標誌雕刻木牌

本篇記錄我用路邊撿來的樟木與龍...

3 年 ago

收集龍眼木修剪枝幹用於木頭工藝

最近打算帶著阿玄做一些木工作品...

3 年 ago

[DIY] 樟木手工自製迷你手裏劍(忍者武器)

本篇記錄阿玄第一次使用木工工具...

3 年 ago

[DIY] 龍眼木手工自製木槌

本篇記錄我用自己砍的龍眼木還有...

3 年 ago

[DIY] 樟木手工自製苦無(忍者武器)

本篇記錄我自己用樟木的枝幹,以...

3 年 ago