Excel VBA 程式設計教學:檔案輸入與輸出 - GT Wang
文章推薦指數: 80 %
這裡介紹如何在Excel VBA 中讀取與寫入文字檔,並提供基本的參考範例。
通常Excel VBA 程式都會 ... 更多 Print 的範例,可以參考MSDN 的說明文件。
Blogger舊站
關於
Facebook
Flickr
物聯網
網站架設
程式設計
統計
素食
特價優惠
宗教
物聯網
網站架設
程式設計
統計
素食
特價優惠
宗教
ExcelVBA程式設計教學:檔案輸入與輸出
2017/07/13
2則留言
這裡介紹如何在ExcelVBA中讀取與寫入文字檔,並提供基本的參考範例。
通常ExcelVBA程式都會從Excel表格中取得資料,經過處理之後再送回Excel表格中,但有些時候我們也會需要直接從外部的文字檔讀取資料,或是將處理完的資料儲存至外部的文字檔中,以下是ExcelVBA中檔案讀取與寫入的教學。
讀取外部文字檔
若要在VBA中讀取外部的文字檔,可以使用Open來開啟檔案,其語法為:
Open檔案位置ForInputAs檔案代碼
檔案位置就是檔案在硬碟中的路徑,VBA在開啟檔案之後,會使用檔案代碼來辨識檔案,每個已開啟的檔案都會對應一個不重複的檔案代碼,例如#1、#2等,編號可以不連續,但不可以重複。
開啟檔案之後,通常我們會使用迴圈的方式來讀取整個檔案內容,每次以Line讀取一行資料,然後藉由EOF(endoffile)來判斷檔案是否已經讀取到結尾,如果讀取至結尾則跳出迴圈。
在檔案開啟之後,後續所有的檔案讀取以及判斷檔案結尾等動作,都會使用檔案代碼的方式來指定檔案。
以下是一個簡單的範例:
DimFilePathAsString
'文字檔案位置
FilePath="C:ExcelDemodemo.txt"
'開啟FilePath文字檔,使用編號#1檔案代碼
OpenFilePathForInputAs#1
'執行迴圈,直到編號#1檔案遇到結尾為止
DoUntilEOF(1)
'從編號#1檔案讀取一行資料
LineInput#1,LineFromFile
'輸出一行資料
MsgBox(LineFromFile)
Loop
'關閉編號#1檔案
Close#1
VBA讀取文字檔案
這個範例會開啟C:ExcelDemodemo.txt這個文字檔(執行時請自己建立這個檔案),並將其設定為編號#1的檔案,如果要開啟多個檔案時,則可自行變更每個檔案的代碼,例如#2、#3等。
在迴圈的判斷式中,我們使用EOF(1)來判斷編號#1的檔案是否已經到達結尾處。
在讀檔的動作則使用Line從Input#1之中讀取一行資料,然後將這一行資料儲存在LineFromFile這個變數當中。
當檔案使用完畢之後,要使用Close將開啟的檔案關閉。
寫入外部文字檔
若要將資料寫入外部的文字檔,一開始也是使用Open開啟檔案:
Open檔案位置ForOutputAs檔案代碼
這個語法跟之前讀檔的語法類似,只是把開檔的模式改為Output,檔案位置就填入要寫入的檔案路徑,而檔案代碼也是自己取一個不重複的數字即可。
開啟檔案之後,即可使用Print函數將指定的資料寫入檔案中。
DimOutputFilePathAsString
DimContentAsString
'文字檔案位置
OutputFilePath="C:ExcelDemodemo_output.txt"
'開啟OutputFilePath文字檔,使用編號#2檔案代碼
OpenOutputFilePathForOutputAs#2
'要寫入檔案的內容
Content="Thisisatest."
'將Content的內容寫入編號#2的檔案
Print#2,Content
'關閉編號#2檔案
Close#2
VBA寫入文字檔案
這個範例會打開C:ExcelDemodemo_output.txt這個檔案,然後將Content變數的內容以Print寫入其中,最後呼叫Close將檔案關閉。
而在寫入完成後,demo_output.txt的檔案內容如下:
寫入檔案的內容
如果呼叫Print時,省略要寫入的資料,就會寫入空白行至檔案中:
'寫入空白行
Print#2,
若要拼湊多個變數,產生想要的排版格式,可以使用分號將多個資料串起來:
'以空白分隔
Print#2,"Hello";"";"World"
'以5個空白分隔
Print#2,"Hello";Spc(5);"World"
DimMyBoolAsBoolean
MyBool=True
'輸出字串與布林變數
Print#2,"The";MyBool;"isaBooleanvalue."
DimMyIntAsInteger
MyInt=123
'輸出字串與整數變數
Print#2,"The";MyInt;"isaIntegervalue."
這是寫入的檔案內容:
寫入檔案的內容
更多Print的範例,可以參考MSDN的說明文件。
除了使用Print之外,還有一個Write也可以寫入檔案,它會自動將文字的內容加上雙引號,並以逗號分隔多個輸入變數,以下是一個範例(將上面Print的位置直接替換成Write即可):
'以逗號分隔,寫入檔案
Write#2,"Hello,World",123
Write在寫入檔案時,會將幾種VBA變數轉換為特殊的格式,例如True就會轉為#TRUE#,詳細的說明請參考MSDN的說明文件。
繼續閱讀:12
Windows,程式設計
ExcelOfficeVBA
G.T.Wang
個人使用Linux經驗長達十餘年,樂於分享各種自由軟體技術與實作文章。
2留言
新增留言→
NewStudent
請問如果不知道Excel表格內的資料的範圍,要怎麼使用陣列呢?
‘取得Excel表格內的資料
SheetValues=Sheets(“工作表1”).Range(“A1:C6”).Value
‘動態調整陣列大小
ReDimLineValues(1To3)
ForRowNum=1To5
ForColNum=1To3
‘把Excel資料表的一列資料放進陣列中
LineValues(ColNum)=SheetValues(RowNum,ColNum)
Next
‘將陣列中的資料以逗號連接起來
Line=Join(LineValues,“,”)
‘將CSV資料寫入檔案
Print#OutputFileNum,Line
Next
2019/09/11
回覆
marson
你好有個問題請教
我該如何把輸出的csv檔
改成UTF-8的格式呢?
我嘗試用以下這個還是失敗XD
https://docs.microsoft.com/en-us/sql/ado/reference/ado-api/stream-object-properties-methods-and-events?redirectedfrom=MSDN&view=sql-server-ver15
2019/11/21
回覆
LeaveaReply取消回覆
留言*
Name*
Email*
Website
搜尋
分類Arduino(5)
BeagleBoneBlack(1)
DIY(54)
Linux(317)
macOS(33)
Octave(15)
Perl(12)
R(47)
Windows(98)
WordPress(16)
個人(15)
免費(35)
兒童(30)
實用工具(85)
手機(13)
技巧(45)
有趣(99)
樹莓派(57)
物聯網(55)
玄學(11)
生活(209)
程式設計(137)
統計學(8)
網頁空間(36)
網頁開發(128)
虛擬化(7)
農業(42)
遊戲(9)
開箱(132)
雲端(4)
宗教
如何戒邪淫、遠離婚外情
戒淫寶典:《壽康寶鑑》白話有聲書
公益
社團法人新竹縣愛心物資集發協會
智邦公益網
台灣世界展望會
家扶基金會
igiving公益網
©2022G.T.Wang
延伸文章資訊
- 1第0 講 準備Excel 2013 的VBA 開發環境 在「檔案」/「選項 ...
「修改」等功能頁面,提供編寫Excel VBA 程式及執行「增益集」的各項功. 能按鈕。 ○ 在Excel 內,「巨集」 ... 字串運算式,用來指定對話方塊文字感應說明的說明檔.
- 2Office 的VBA 入門
返回Excel 文件、開啟[巨集] 對話方塊,並再次執行Macro1。 您應該會看到Visual Basic 訊息方塊,以下列文字說明執行階段錯誤:「物件不支援方法的這個 ...
- 3Excel VBA與巨集程式設計:新手入門就靠這一本 - 博客來
書名:Excel VBA與巨集程式設計:新手入門就靠這一本,語言:繁體中文,ISBN:9789862016909,頁數:640,出版社:博碩,作者:Bill Jelen、Tracy Syrsta...
- 4說明: 關於使用VBA 自訂AutoCAD
AutoCAD 系列產品可以做為其他應用程式(例如Microsoft Word 或Excel) 的自動控制器使用。 注意事項VBA 不再依預設安裝。若要取得更多資訊,請造訪http://www....
- 5Chapter 01 EXCEL VBA 程式設計基本介紹