延續前面
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
也就是即使是相同的變數,都要完整地列出來
參考資源
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?