Excel VBAで複数のWordファイルを一つのPDFに結合する方法

この記事では、Excel VBAを使用して、複数のWordファイルを一つのPDFに結合して保存する方法について詳しく説明します。初心者から上級者まで、実用的な技術を取得するための具体的なコード例、その詳細な解説、さらには応用例も含めてご紹介いたします。

目次

Excel VBAの基本

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

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

複数のWordファイルを一つのPDFに結合する基本的な方法

Excel VBAを利用すると、複数のWordファイルを一つのPDFファイルに結合して保存することができます。以下はその基本的な手順となるコードです。


Sub CombineWordFilesToPDF()
    Dim WordApp As Object
    Dim WordDoc As Object
    Dim PDFPath As String
    Dim WordFiles As Variant
    Dim i As Integer
    
    ' Wordアプリケーションの起動
    Set WordApp = CreateObject("Word.Application")
    
    ' PDFとして保存するパスを指定
    PDFPath = "C:\path\to\output\combined.pdf"
    
    ' 結合するWordファイルの選択
    WordFiles = Application.GetOpenFilename(FileFilter:="Word Files (*.docx), *.docx", MultiSelect:=True)
    
    ' Wordファイルが選択されなかった場合、処理を終了
    If Not IsArray(WordFiles) Then Exit Sub
    
    ' 新しいWord文書を作成
    Set WordDoc = WordApp.Documents.Add
    
    ' 選択されたすべてのWordファイルを新しい文書に挿入
    For i = LBound(WordFiles) To UBound(WordFiles)
        WordDoc.Range.InsertFile WordFiles(i)
        WordDoc.Range.InsertBreak Type:=7 ' 改ページを挿入
    Next i
    
    ' PDFとして保存
    WordDoc.ExportAsFixedFormat PDFPath, 17 ' 17 はPDF形式を示す
    
    ' Word文書とWordアプリケーションを閉じる
    WordDoc.Close
    WordApp.Quit
    
    ' オブジェクトの開放
    Set WordDoc = Nothing
    Set WordApp = Nothing
End Sub

コードの詳細解説

– `Word.Application` を用いてWordアプリケーションのインスタンスを作成します。
– `Application.GetOpenFilename`で、結合するWordファイルを選択できます。
– 選択されたWordファイルは、新しいWord文書に一つずつ挿入されます。
– 最後に、`ExportAsFixedFormat`メソッドを使用して、文書をPDFとして保存します。

応用例

1.特定のフォルダ内のすべてのWordファイルを結合

指定したフォルダ内のすべてのWordファイルを自動的に結合する方法です。


Sub CombineAllWordFilesInFolder()
    ' [前述のコードと同様の変数宣言部分をここに記述]
    
    Dim FolderPath As String
    Dim WordFile As String
    
    FolderPath = "C:\path\to\folder"
    WordFile = Dir(FolderPath & "\*.docx")
    
    While WordFile <> ""
        WordDoc.Range.InsertFile FolderPath & "\" & WordFile
        WordDoc.Range.InsertBreak Type:=7
        WordFile = Dir
    Wend
    
    ' [前述のコードと同様の保存、終了部分をここに記述]
End Sub

2.ページ区切りのない結合

改ページを挿入せずにWordファイルを結合する方法です。


' [前述のコードの一部]
For i = LBound(WordFiles) To UBound(WordFiles)
    WordDoc.Range.InsertFile WordFiles(i)
    ' ここで改ページを挿入しない
Next i
' [前述のコードの一部]

3.特定の形式のWordファイルだけを結合

例えば、”_final.docx”という接尾辞が付いたWordファイルのみを結合する方法です。


WordFile = Dir(FolderPath & "\*_final.docx")
While WordFile <> ""
    ' [前述のコードの一部]
    WordFile = Dir
Wend

まとめ

Excel VBAを使用して、複数のWordファイルを一つのPDFファイルに結合する方法は、業務の効率化や自動化に大変有効です。上述のコードとその応用を活用し、日常の作業をより効果的に行ってください。

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

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

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

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

コメント

コメントする

目次