Excel VBAを利用してWordドキュメントをPDFに保存する方法

この記事では、Excel VBAを使用して、画像やグラフィックを含むWordドキュメントをPDFとして保存する方法について詳細に説明します。具体的なコード例、その詳細な解説、さらに応用例までを網羅しています。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

Excel VBAを使用してWordドキュメントをPDFとして保存する基本的な方法

Wordオブジェクトの活用により、Excel VBAからWordドキュメントを操作し、PDFとして保存することが可能です。


Sub SaveWordDocAsPDF()
    Dim wdApp As Object
    Dim wdDoc As Object

    ' Wordアプリケーションを起動
    Set wdApp = CreateObject("Word.Application")
    wdApp.Visible = False

    ' Wordドキュメントを開く
    Set wdDoc = wdApp.Documents.Open("C:\path\to\your\word\document.docx")

    ' PDFとして保存
    wdDoc.SaveAs2 "C:\path\to\save\document.pdf", 17

    ' Wordドキュメントとアプリケーションを閉じる
    wdDoc.Close
    wdApp.Quit
    Set wdDoc = Nothing
    Set wdApp = Nothing
End Sub

コードの解説

1. **Wordオブジェクトの設定**: VBAでWordを操作するため、Wordアプリケーションのオブジェクト(`wdApp`)とWordドキュメントのオブジェクト(`wdDoc`)を定義します。
2. **Wordアプリケーションの起動**: `CreateObject`関数を使用してWordアプリケーションを起動します。`wdApp.Visible = False`により、バックグラウンドでの動作とします。
3. **Wordドキュメントの開く**: `wdApp.Documents.Open`メソッドで指定のパスのWordドキュメントを開きます。
4. **PDFとして保存**: `wdDoc.SaveAs2`メソッドを使用して、WordドキュメントをPDFとして保存します。17はPDFフォーマットを意味します。
5. **終了処理**: ドキュメントとアプリケーションを閉じ、オブジェクトをリリースします。

応用例

応用例1: 複数のWordドキュメントを一括でPDFに変換


Sub ConvertMultipleWordDocsToPDF()
    Dim wdApp As Object
    Dim wdDoc As Object
    Dim folderPath As String
    Dim fileName As String
    ' Wordアプリケーションを起動
    Set wdApp = CreateObject("Word.Application")
    wdApp.Visible = False
    folderPath = "C:\path\to\word\documents\"
    fileName = Dir(folderPath & "*.docx")
    ' フォルダ内の各WordドキュメントをPDFに変換
    Do While fileName <> ""
        Set wdDoc = wdApp.Documents.Open(folderPath & fileName)
        wdDoc.SaveAs2 folderPath & Replace(fileName, ".docx", ".pdf"), 17
        wdDoc.Close
        fileName = Dir
    Loop
    wdApp.Quit
    Set wdDoc = Nothing
    Set wdApp = Nothing
End Sub

応用例2: Wordドキュメント内の指定のテキストを編集してからPDFとして保存


Sub EditAndSaveAsPDF()
    Dim wdApp As Object
    Dim wdDoc As Object
    Dim rng As Object

    ' Wordアプリケーションを起動
    Set wdApp = CreateObject("Word.Application")
    wdApp.Visible = False

    ' Wordドキュメントを開く
    Set wdDoc = wdApp.Documents.Open("C:\path\to\your\word\document.docx")

    ' テキストを置換
    Set rng = wdDoc.Content
    rng.Find.Execute FindText:="old_text", ReplaceWith:="new_text", Replace:=2

    ' PDFとして保存
    wdDoc.SaveAs2 "C:\path\to\save\document_edited.pdf", 17

    wdDoc.Close
    wdApp.Quit
    Set rng = Nothing
    Set wdDoc = Nothing
    Set wdApp = Nothing
End Sub

応用例3: PDFに変換する際の設定をカスタマイズ


Sub SaveWithCustomSettings()
    Dim wdApp As Object
    Dim wdDoc As Object
    Dim pdfSettings As Object

    ' Wordアプリケーションを起動
    Set wdApp = CreateObject("Word.Application")
    wdApp.Visible = False

    ' Wordドキュメントを開く
    Set wdDoc = wdApp.Documents.Open("C:\path\to\your\word\document.docx")

    ' PDFの設定をカスタマイズ
    Set pdfSettings = wdDoc.ExportAsFixedFormat
    With pdfSettings
        .ExportFormat = 17
        .OpenAfterExport = False
        .OptimizeFor = 0
        .BitmapMissingFonts = True
        .UseISO19005_1 = False
    End With

    ' PDFとして保存
    wdDoc.SaveAs2 "C:\path\to\save\custom_document.pdf", 17, , , , , , , , , pdfSettings

    wdDoc.Close
    wdApp.Quit
    Set pdfSettings = Nothing
    Set wdDoc = Nothing
    Set wdApp = Nothing
End Sub

まとめ

Excel VBAを利用してWordドキュメントをPDFとして保存する方法は、日常業務で非常に便利である。上述した基本的な方法をマスターしたら、

さらなる応用例にチャレンジして、業務効率の向上を図ってみてはいかがでしょうか。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次