在日常報表製作、資料審核或文件提交流程中,將 Excel 工作表匯出為 PDF 是常見需求。透過 VBA,我們可以建立一個「一鍵匯出」功能,自動將指定工作表或整份工作簿轉存為 PDF,節省手動操作時間,並確保格式一致。
功能概述
這段 VBA 程式碼可實現以下功能:
- 自動將目前工作簿的指定工作表匯出為 PDF
- 使用者可自訂儲存路徑與檔名
- 支援匯出整份工作簿或單一工作表
- 自動覆蓋同名檔案(可選)
VBA 程式碼範例
Sub ExportSheetToPDF()
Dim SavePath As String
Dim SheetToExport As Worksheet
' 指定要匯出的工作表(這裡以第一張為例)
Set SheetToExport = ThisWorkbook.Sheets(1)
' 設定儲存路徑與檔名
SavePath = ThisWorkbook.Path & "\" & SheetToExport.Name & "_報表.pdf"
' 匯出為 PDF
SheetToExport.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=SavePath, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
MsgBox "PDF 已成功匯出至:" & SavePath, vbInformation
End Sub
程式碼詳細解說(初學者導向)
這段程式碼的目的是將目前工作簿中的第一張工作表匯出為 PDF。以下是逐段說明:首先,我們宣告了兩個變數:
SavePath是用來儲存匯出後 PDF 的完整路徑與檔名。SheetToExport是指要匯出的工作表物件。
接著,我們使用 Set SheetToExport = ThisWorkbook.Sheets(1) 指定要匯出的工作表。這裡預設為第一張工作表,你也可以改為指定名稱,例如 Sheets("報表")。
然後設定儲存路徑與檔名:
ThisWorkbook.Path取得目前工作簿的資料夾路徑。SheetToExport.Name & "_報表.pdf"組合成檔名,例如「工作表1_報表.pdf」。
接下來使用 ExportAsFixedFormat 方法匯出 PDF:
Type:=xlTypePDF指定匯出格式為 PDF。Filename:=SavePath指定儲存位置與檔名。Quality:=xlQualityStandard使用標準品質。IncludeDocProperties:=True包含文件屬性。IgnorePrintAreas:=False使用工作表中設定的列印範圍。OpenAfterPublish:=True匯出後自動開啟 PDF。
最後,使用 MsgBox 顯示匯出成功訊息與儲存路徑。
操作步驟與使用方式
- 將程式碼貼入 Excel 的模組中(例如 Module1)
- 執行
ExportSheetToPDF程式 - 程式會自動匯出第一張工作表為 PDF 並開啟檔案
應用場景與延伸建議
- 每日或每週報表自動匯出
- 專案進度表、財務報表、表單紀錄轉存 PDF
- 自動產出可列印版本供主管審閱或客戶簽核
延伸功能建議:
- 加入日期戳記作為檔名(例如「報表_2025-10-16.pdf」)
- 匯出整份工作簿(使用
ThisWorkbook.ExportAsFixedFormat) - 加入儲存路徑選擇對話框
- 自動寄送 PDF 附件(搭配 Outlook 自動化)
常見問題 FAQ
Q1:是否可以匯出整份工作簿?
可以使用 ThisWorkbook.ExportAsFixedFormat 方法來匯出整份工作簿,而非單一工作表。
Q2:如何選擇儲存位置?
可加入 FileDialog(msoFileDialogSaveAs) 讓使用者自訂儲存路徑與檔名。
Q3:匯出後的格式不正確怎麼辦?
請確認工作表的列印範圍已正確設定,或將 IgnorePrintAreas 設為 True 以匯出整張工作表。
結語與延伸閱讀
這段 VBA 程式碼提供了高效率的「一鍵匯出 Excel 為 PDF」功能,適合用於報表產出、文件備份與審核流程。後續你可以加入自動命名、儲存路徑選擇、批次匯出等模組,打造完整的報表自動化工具。
下一篇將介紹如何「一鍵寄送 Excel 或 PDF 檔案至指定 Email」,敬請期待【VBA 自動化教學】第 4 篇。














