VBA / 使用Excel VBA將Word轉換成PDF

VBA / 使用Word VBA批次轉換PDF檔使用了一個批次轉換PDF的Word VBA

原理就是利用Word自身另存新檔為PDF的功能

這次是想改成用Excel VBA的方式來處理

在Excel VBA開啟word檔並且使用相關的功能時

必須設定引用Word物件才能正常使用Word VBA的功能

在測試的時候曾經忘記引用

這樣就會造成部分的功能出現錯誤

目前的版本如下

主要是測試核心功能:在Excel裡透過VBA開啟word檔,並且轉檔成PDF

之後再來參考彰化一整天的程式,修改成檔案選取視窗,批次轉換檔案,儲存在相同的資料夾裡

1
2
3
4
5
6
7
8
9
Sub pdf()
    Set wordapp = CreateObject("word.Application")
    Set wordfile = wordapp.Documents.Open(Filename:="資料路徑\XXX.docx", ReadOnly:=True)
    wordapp.Visible = True
    wordapp.Activate
    wordfile.SaveAs2 Filename:="資料路徑\XXX.pdf", FileFormat:=wdFormatPDF   

    wordapp.Quit
End Sub

 

基本概念

1.建立word.Application物件

2.透過word.Application物件開啟檔案

3.存檔成PDF

可以將檔案轉存成PDF的方法有2種

1.ExportAsFixedFormat

2.SaveAs2

兩者的變數名稱有點差異

其實還有ExportAsFixedFormat2,但是不知道為什麼會出現錯誤,猜測可能是版本的問題

4.關閉目前的word.Application物件

備註:

引用項目時,必須注意名稱的命名不能跟關鍵字重複,否則會出現錯誤

參考:為何會出現”必須是變數或程序,而非模組”這樣的錯誤?

參考:需要變數或程序,不是專案

參考資源

Exporting Word to pdf from Excel macros

CreateObject 函式

Word VBA 參考