VBA / 使用Excel VBA將Word轉換成PDF 修改版2

延續前面 

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

VBA / 使用Excel VBA將Word轉換成PDF 修改版

結合原始版本─Ppt批次轉換成PDF,跟修改的版本─Word批次轉換成PDF

其實就是用判斷式來處理,如果副檔名是doc或docx就執行Word轉檔,否則就執行Ppt轉檔

由於在原始程式裡面就有透過尋找”.”來找出檔名的程式判斷

因此,只需要改用MID()就可以找出副檔名

由於原始程式是別人的,所以還是只說明有修改的部分

Filename = Range("b" & i)
        
n = rinstr(Filename, ".")
        
'檔案名稱
strFileName = Left(Filename, n - 1)
        
'副檔名
extendFileName = Mid(Filename, n + 1)

 

原始程式在選取檔案的時候,會分別將資料夾路經跟含副檔名完整的檔案名稱寫入資料表的A欄與B攔

因此在轉檔的時候,程式會去抓取B欄的完整檔案名稱

透過自訂函數rinstr()找出”.”的位置,再透過Left()函數取出檔案名稱,而這是為了之後另存新檔用的

所以只需要根據已經找出”.”的位置,改用Mid()函數,就能夠找出副檔名

(Mid()如果省略第3個引數,就會傳回從第2個引數指定的位置開始一直到字串結尾的所有字元)

原始版會顯示開啟的檔案,我改成隱藏

之前在使用的時候,曾經遇到開啟的檔案因為崁入電腦沒有的特殊字型,會詢問是否用唯讀的方式,這樣會中斷程式執行

所以我直接改成用唯讀的方式來開啟,只是不知道這樣有沒有用

Set ppPres = ppApp.Presentations.Open(Filename:=Fullpath & Filename, ReadOnly:=True, WithWindow:=msoFalse)

備註

VBA If判斷式 如果要再加上Or 或者And比較

必須是 If 變數1=條件1 Or 變數1=條件2

也就是即使是相同的變數,都要完整地列出來

參考:[求助] 关于IF语句中and和or用法的求助!

 

參考資源

VBA Excel FileDialog to set/reset filters

How can I programmatically open Powerpoint without seeing the window?

簡報內嵌字型為什麼會失敗?

PowerPoint: Remove Embedded Fonts

How to check whether the presentation contains some non-standard font?

Presentation.SaveAs 方法 (PowerPoint)