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

この記事では、Excel VBAを用いてWordドキュメントのヘッダーやフッターを含む範囲をPDFとして保存する手順について詳しく解説します。初心者から上級者まで、効率的にWordドキュメントをPDFに変換する方法を身につけることができます。

目次

Excel VBAの基本

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

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

基本のコード

WordドキュメントをPDFとして保存する基本のVBAコードを以下に示します。


Sub SaveWordAsPDF()
    Dim WordApp As Object
    Dim WordDoc As Object
    Dim FileName As String
    Dim PDFName As String

    ' Wordアプリケーションを開始
    Set WordApp = CreateObject("Word.Application")
    
    ' Wordドキュメントを開く
    FileName = "C:\path\to\your\document.docx" 'ここにWordファイルのパスを指定
    Set WordDoc = WordApp.Documents.Open(FileName)
    
    ' PDFとして保存
    PDFName = "C:\path\to\save\document.pdf" 'ここに保存するPDFのパスを指定
    WordDoc.ExportAsFixedFormat PDFName, 17 '17はPDF形式を意味する
    
    ' Wordドキュメントとアプリケーションを閉じる
    WordDoc.Close
    WordApp.Quit
End Sub

このコードは、Wordアプリケーションを開始し、指定されたWordドキュメントを開いてPDFとして保存し、Wordアプリケーションを閉じるというシンプルな処理を行います。

コードの詳細解説

コードの各部分の詳細な解説を以下に示します。

CreateObject関数

この関数は、指定された外部アプリケーションのインスタンスを生成します。今回は”Word.Application”を指定してWordアプリケーションのインスタンスを生成しています。

Documents.Openメソッド

WordアプリケーションのDocumentsオブジェクトのOpenメソッドを使用して、指定されたWordドキュメントを開きます。

ExportAsFixedFormatメソッド

このメソッドはWordドキュメントをPDFやXPS形式で保存するためのメソッドです。第1引数には保存先のファイルパスを、第2引数には保存する形式を指定します。今回は17(PDF形式)を指定しています。

応用例

1. 複数のWordドキュメントを一度にPDFとして保存

以下のコードは、指定したフォルダ内のすべてのWordドキュメントをPDFとして保存する例です。


Sub SaveMultipleWordAsPDF()
    Dim WordApp As Object
    Dim WordDoc As Object
    Dim FolderPath As String
    Dim FileName As String
    Dim PDFName As String
    ' Wordアプリケーションを開始
    Set WordApp = CreateObject("Word.Application")
    
    FolderPath = "C:\path\to\folder\" ' Wordドキュメントのあるフォルダを指定
    
    FileName = Dir(FolderPath & "*.docx")
    
    Do While FileName <> ""
        Set WordDoc = WordApp.Documents.Open(FolderPath & FileName)
        PDFName = FolderPath & Replace(FileName, ".docx", ".pdf")
        WordDoc.ExportAsFixedFormat PDFName, 17
        WordDoc.Close
        FileName = Dir()
    Loop
    
    WordApp.Quit
End Sub

2. 特定のセクションのみをPDFとして保存

以下のコードは、Wordドキュメントの特定のセクションのみをPDFとして保存する例です。


Sub SaveSpecificSectionAsPDF()
    Dim WordApp As Object
    Dim WordDoc As Object
    Dim FileName As String
    Dim PDFName As String

    ' Wordアプリケーションを開始
    Set WordApp = CreateObject("Word.Application")
    
    ' Wordドキュメントを開く
    FileName = "C:\path\to\your\document.docx"
    Set WordDoc = WordApp.Documents.Open(FileName)
    
    ' 第2セクションのみをPDFとして保存
    PDFName = "C:\path\to\save\section2.pdf"
    WordDoc.ExportAsFixedFormat PDFName, 17, , , 2, 2
    
    ' Wordドキュメントを閉じる
    WordDoc.Close
    WordApp.Quit
End Sub

3. ワードプレスのタイトルにPDFとして保存

Wordドキュメントの内容を基にワードプレスのタイトルをPDFとして保存する例です。


Sub SaveWordTitleAsPDF()
    Dim WordApp As Object
    Dim WordDoc As Object
    Dim FileName As String
    Dim PDFName As String
    Dim Title As String

    ' Wordアプリケーションを開始
    Set WordApp = CreateObject("Word.Application")
    
    ' Wordドキュメントを開く
    FileName = "C:\path\to\your\document.docx"
    Set WordDoc = WordApp.Documents.Open(FileName)
    
    ' Wordのタイトルを取得
    Title = WordDoc.BuiltInDocumentProperties("Title")
    
    ' タイトルを基にPDF

として保存
    PDFName = "C:\path\to\save\" & Title & ".pdf"
    WordDoc.ExportAsFixedFormat PDFName, 17
    
    ' Wordドキュメントを閉じる
    WordDoc.Close
    WordApp.Quit
End Sub

まとめ

Excel VBAを活用してWordドキュメントをPDFとして保存する方法について、基本から応用まで詳しく解説しました。これらの技術を用いることで、日常の業務やタスクを効率的に自動化することが可能となります。是非とも実践してみて、VBAの強力な機能を最大限に活用してください。

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

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

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

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

コメント

コメントする

目次