※当サイトは、アフィリエイト広告を利用しPRを含みます。

技術系

VBSでWordとExcelをPDF化。複数ファイルも対応

Microsoft Officeは標準でPDF化できることをご存じかと思います。

印刷機能のメニューから「Microsoft Print to PDF」を選択すれば良いですね?

MS_Officeはプリンタ機能でPDF化できる

MS_Officeは印刷機能で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化の動画イメージ

PDF化の動作イメージ

 

簡単な仕様

  • ドラッグアンドドロップすると同じフォルダにPDF化される
  • 印刷の体裁のまま出力される
  • Excelは全シート対象
  • 右クリックメニューの送るに入れると便利(次の章で解説)

 

右クリックメニューの送るに入れると便利

以前にもお伝えしている方法を応用すれば、右クリックメニューで呼び出せます。

 

著作権等

プログラムをカスタマイズして2次利用する際は当ブログへのリンクをお願いします。

商用利用は禁止です。

 

参考にした動作

Excel仕事時短大学ch. 様の動作を参考にしました。

該当チャンネルの方はコード非公開&複数ファイル対応が有償だったため、自分で作ってみました。

残念ながらPowerPointは上手くいかなかったけど、今回必要なのはWordとExcelファイルだったのでまぁいいかなと。


社畜系インフラエンジニアブログのTOPへ戻る

コメントもらえたら泣いて喜びます!
  • この記事を書いた人
  • 最新記事
生き残りたいインフラエンジニアのカナデ

kanade

IT関連の仕事に従事し気付けば20余年。好きな言葉は「よくわからないけど動いてる」です。どうにかして生き残りたいアラフォーのIT系エンジニア。

-技術系
-