この記事では、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講座が表示されます。
-
【初心者向け】パワークエリ入門:ETLツールを使ってエクセルデータを簡単に整形・統合しよう!(1/11)
-
【実践ガイド】パワークエリでデータ収集:Excel、CSV、PDF、Webデータを簡単に取り込む方法をマスターしよう!(2/11)
-
【総力特集】パワークエリで列操作をマスター:選択、変更、移動、削除、結合、分割の詳細解説&実践テクニック!(3/11)
-
【徹底解説】パワークエリで行操作をマスター!フィルター・保持・削除テクニックと練習用エクセルで実践学習(4/11)
-
パワークエリでデータクレンジング: 文字列結合、0埋め、テキスト関数をマスター(5/11)
-
パワークエリで四捨五入、切り捨て、切り上げをマスターする方法(6/11)
-
パワークエリで効率的なデータグループ化を実現する方法(7/11)
-
パワークエリで時間と日付の計算をマスター!便利な関数を使って効率アップ(8/11)
-
パワークエリで条件別集計をマスターする方法(9/11)
-
Excelパワークエリでクロス集計表とデータベース形式を瞬時に変換する方法(10/11)
-
Excelパワークエリ入門: 効率的なデータ整理をマスターしよう!(11/11)
パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください
コメント