Microsoft Officeは標準でPDF化できることをご存じかと思います。
印刷機能のメニューから「Microsoft Print to PDF」を選択すれば良いですね?
でも、複数ファイルあった場合はいちいちファイルを開いて印刷してPDF、印刷してPDF…
と、ファイル数分行なう必要があります。ちょっとめんどくさいですよね。
VBSでWordとExcelファイルをPDFするコード
VBSで実装しました。1ファイルでも、複数ファイルあっても一括でPDF変換してくれます。
If WScript.Arguments.Length = 0 Then
MsgBox "PDF化したいWord,Excelファイルをドラッグし、このファイルにドロップしてください", vbOKOnly + vbInformation, "ツールの使い方"
WScript.Quit
End If
Set objFSO = CreateObject("Scripting.FileSystemObject")
' 各アプリケーションのインスタンスを事前に作成
Set objWord = CreateObject("Word.Application")
Set objExcel = CreateObject("Excel.Application")
For Each strArg In WScript.Arguments
If objFSO.FileExists(strArg) Then
fileExtension = objFSO.GetExtensionName(strArg)
Select Case fileExtension
Case "doc", "docx"
ConvertToPDF strArg, "Word"
Case "xls", "xlsx", "xlsm"
ConvertToPDF strArg, "Excel"
Case Else
MsgBox " Word,Excelファイル以外はPDF変換できません。終了します。 ", vbOKOnly + vbInformation, "ツールの使い方"
WScript.Quit
End Select
End If
Next
' アプリケーションを終了
objWord.Quit
objExcel.Quit
Sub ConvertToPDF(filePath, appType)
' 変換するファイルのパスを取得
sourceFilePath = filePath
' PDFファイルの出力パスを生成
pdfFilePath = objFSO.BuildPath(objFSO.GetParentFolderName(filePath), objFSO.GetBaseName(filePath) & ".pdf")
' ファイルを開く
If appType = "Word" Then
Set objDoc = objWord.Documents.Open(filePath)
objDoc.ExportAsFixedFormat pdfFilePath, 17
objDoc.Close False ' ファイルを閉じる(変更を保存しない)
ElseIf appType = "Excel" Then
Set objWorkbook = objExcel.Workbooks.Open(filePath)
objWorkbook.ExportAsFixedFormat 0, pdfFilePath
objWorkbook.Close False ' ファイルを閉じる(変更を保存しない)
End If
End Sub
MsgBox " PDF化終了しました " , vbOKOnly + vbInformation
実際の動作はこんな感じ
簡単な仕様
- ドラッグアンドドロップすると同じフォルダにPDF化される
- 印刷の体裁のまま出力される
- Excelは全シート対象
- 右クリックメニューの送るに入れると便利(次の章で解説)
右クリックメニューの送るに入れると便利
以前にもお伝えしている方法を応用すれば、右クリックメニューで呼び出せます。
著作権等
プログラムをカスタマイズして2次利用する際は当ブログへのリンクをお願いします。
商用利用は禁止です。
参考にした動作
Excel仕事時短大学ch. 様の動作を参考にしました。
該当チャンネルの方はコード非公開&複数ファイル対応が有償だったため、自分で作ってみました。
残念ながらPowerPointは上手くいかなかったけど、今回必要なのはWordとExcelファイルだったのでまぁいいかなと。



