WordやExcelのファイルをワンクリックでPDFに保存する
はじめに
私は普段、WordやExcelで、よくPDFファイルに出力するということをやるのですが、その際使っているのが、「PDF形式で保存するマクロ」です。
WordやExcelのファイルをPDF形式で保存する際、キー操作で行うと、
-
F12
を押して、「名前を付けて保存」ダイアログボックスをポップアップ表示 -
TAB
を押して、「ファイルの種類」にフォーカスを移動 -
P
を押して、「PDF(*.pdf)」を選択 -
Alt
+S
を押して、「保存(S)」で保存
というようになりますが、これをマクロを使って、ワンクリックで行えるようにしています。
以下は、その内容です。
Word
-
[開発] タブを表示する
[ファイル] タブ、[オプション]、[リボンのユーザー設定] の順に移動する
[リボンのユーザー設定] および [メイン タブ] の下の [開発] チェック ボックスをオンにする -
マクロを作成する
[開発] タブの [コード] グループで、[マクロ] をクリックする
[マクロ名] ボックスで、"PDF形式で保存" と入力する
[マクロの保存先] リストで、Normal.dotm(全文書対象のテンプレート) をクリックする
[作成] をクリックして Visual Basic エディターを開く
Visual Basic エディターのコードウィンドウに、下記のWordマクロを記述する
- normal.dotm:
マクロはWordの標準テンプレートである「normal.dotm」に保存される
保存されたマクロは、すべての新規文書や既存の文書で使用可能
- クイック アクセス ツール バーにマクロ ボタンを追加する
[ファイル]、[オプション]、[クイック アクセス ツール バー] の順にクリックする
[コマンドの選択] ボックスの一覧で、[マクロ] をクリックする
[Normal.NewMacros.PDF形式で保存]をクリックする
[追加] をクリックして、クイック アクセス ツール バーのボタンの一覧にマクロを移動する
[OK] をクリックする
クイック アクセス ツール バーに新しいボタンが表示され、これをクリックしてマクロを実行できる。
Wordマクロ
Sub PDF形式で保存()
Dim myFileName As String 'ファイル名
Dim myFilePath As String '保存先のフォルダパス
Dim myDoc As Document
Dim intPos As Integer 'ピリオドの位置
Set myDoc = ActiveDocument
'拡張子のない名称を取得
myFileName = myDoc.Name
intPos = InStrRev(myFileName, ".")
myFileName = Left(myFileName, intPos - 1)
'PDFファイルで保存
myFilePath = myDoc.Path 'Wordファイルと同じフォルダ
myDoc.ExportAsFixedFormat _
OutputFileName:=myFilePath & "\" & myFileName & ".pdf", _
ExportFormat:=wdExportFormatPDF, _
OpenAfterExport:=True
Set myDoc = Nothing
End Sub
- OpenAfterExport:=Trueで、PDF形式でドキュメントをエクスポートした後、そのエクスポートされたファイルを自動的に開きます。不要な場合はFalseで。
- マクロの実行には、Wordファイルの保存が必要です。
Excel
-
[開発] タブを表示する
[ファイル] タブ、[オプション]、[リボンのユーザー設定] の順に移動する
[リボンのユーザー設定] および [メイン タブ] の下の [開発] チェック ボックスをオンにする -
マクロを作成する
[開発] タブの [コード] グループで、[マクロ] をクリックする
[マクロ名] ボックスで、"PDF形式で保存" と入力する
[マクロの保存先] リストで、PERSONAL.XLSB をクリックする
[作成] をクリックして Visual Basic エディターを開く
Visual Basic エディターのコードウィンドウに、下記のExcelマクロを記述する
- PERSONAL.XLSB:
Excelの個人用マクロ ブック
このブックに保存されたマクロは、Excelを起動するたびに自動的に読み込まれ、すべてのExcelファイルで利用可能になる
初期状態では作成されていないため、最初に個人用マクロ ブックを作成しないといけない - 個人用マクロ ブックの作成方法
[開発] タブの [コード] グループで、[マクロの記録] をクリックする
[マクロ名] ボックスは、デフォルトのままで、
[マクロの保存先] リストで、個人用マクロ ブックをクリックする
[OK] をクリックする
[開発] タブの [コード] グループで、[記録終了] をクリックする
Excelを閉じると、個人用マクロ ブックの変更を保存しますか?と聞かれるので、[保存(S)]で保存する
保存場所:C:\Users<ユーザー名>\AppData\Roaming\Microsoft\Excel\XLSTART
- クイック アクセス ツール バーにマクロ ボタンを追加する
[ファイル]、[オプション]、[クイック アクセス ツール バー] の順にクリックする
[コマンドの選択] ボックスの一覧で、[マクロ] をクリックする
[PERSONAL.XLSB!PDF形式で保存]をクリックする
[追加] をクリックして、クイック アクセス ツール バーのボタンの一覧にマクロを移動する
[OK] をクリックする
クイック アクセス ツール バーに新しいボタンが表示され、これをクリックしてマクロを実行できる。
Excelマクロ
Sub PDF形式で保存()
myFileName = ActiveWorkbook.Name
intPos = InStrRev(myFileName, ".")
myFileName = Left(myFileName, intPos - 1)
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
FileName:=ActiveWorkbook.Path & "\" & myFileName & ".pdf", _
OpenAfterPublish:=True
End Sub
- OpenAfterPublish:=Trueで、PDF形式でドキュメントをエクスポートした後、そのエクスポートされたファイルを自動的に開きます。不要な場合はFalseで。
- マクロの実行には、Excelファイルの保存が必要です。
Word/Excel共通のコマンド
本稿で、PDF保存のマクロについて書きましたが、その後の調べでマクロを作成しなくても、コマンドで、クイック アクセス ツール バーにボタンを登録することができることが分かりました。
ですので、単にPDF保存のボタンを追加するだけなら、そちらの方が簡単です。
以下、Word・Excel共通のコマンドになります。
- クイック アクセス ツール バーにコマンド ボタンを追加する
[ファイル]、[オプション]、[クイック アクセス ツール バー] の順にクリックする
[コマンドの選択] ボックスの一覧で、[すべてのコマンド] をクリックする
[PDF または XPS 形式で発行]をクリックする
[追加] をクリックして、クイック アクセス ツール バーのボタンの一覧にコマンドを移動する
[OK] をクリックする
クイック アクセス ツール バーに新しいボタンが表示され、これをクリックしてコマンドを実行できる。
- コマンドを実行すると、ファイルを自動的に開きます。
- コマンドの実行に、ファイルの保存は必要ありません。
おまけ
私は、PDFビューアにsumatra PDFというアプリを使っています。
このアプリは、PDFファイルを開いた状態で、そのファイルが上書き保存されると、即座に描画を更新してくれます。
Word/Excelマクロでは、OpenAfterExport:=False/OpenAfterPublish:=Falseにすることで、ファイルを自動的に開かずに、上書き保存だけすることができるので、この動作と組み合わせると、便利です。
以上
Discussion