🐕

WordやExcelのファイルをワンクリックでPDFに保存する

2024/08/19に公開

はじめに

私は普段、WordやExcelで、よくPDFファイルに出力するということをやるのですが、その際使っているのが、「PDF形式で保存するマクロ」です。

WordやExcelのファイルをPDF形式で保存する際、キー操作で行うと、

  1. F12を押して、「名前を付けて保存」ダイアログボックスをポップアップ表示
  2. TABを押して、「ファイルの種類」にフォーカスを移動
  3. Pを押して、「PDF(*.pdf)」を選択
  4. Alt + Sを押して、「保存(S)」で保存

というようになりますが、これをマクロを使って、ワンクリックで行えるようにしています。
以下は、その内容です。

Word

  1. [開発] タブを表示する
    [ファイル] タブ、[オプション]、[リボンのユーザー設定] の順に移動する
    [リボンのユーザー設定] および [メイン タブ] の下の [開発] チェック ボックスをオンにする

  2. マクロを作成する
    [開発] タブの [コード] グループで、[マクロ] をクリックする
    [マクロ名] ボックスで、"PDF形式で保存" と入力する
    [マクロの保存先] リストで、Normal.dotm(全文書対象のテンプレート) をクリックする
    [作成] をクリックして Visual Basic エディターを開く
    Visual Basic エディターのコードウィンドウに、下記のWordマクロを記述する

  • normal.dotm:
    マクロはWordの標準テンプレートである「normal.dotm」に保存される
    保存されたマクロは、すべての新規文書や既存の文書で使用可能
  1. クイック アクセス ツール バーにマクロ ボタンを追加する
    [ファイル]、[オプション]、[クイック アクセス ツール バー] の順にクリックする
    [コマンドの選択] ボックスの一覧で、[マクロ] をクリックする
    [Normal.NewMacros.PDF形式で保存]をクリックする
    [追加] をクリックして、クイック アクセス ツール バーのボタンの一覧にマクロを移動する
    [OK] をクリックする

クイック アクセス ツール バーに新しいボタンが表示され、これをクリックしてマクロを実行できる。

Wordマクロ

Normal.dotm
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

  1. [開発] タブを表示する
    [ファイル] タブ、[オプション]、[リボンのユーザー設定] の順に移動する
    [リボンのユーザー設定] および [メイン タブ] の下の [開発] チェック ボックスをオンにする

  2. マクロを作成する
    [開発] タブの [コード] グループで、[マクロ] をクリックする
    [マクロ名] ボックスで、"PDF形式で保存" と入力する
    [マクロの保存先] リストで、PERSONAL.XLSB をクリックする
    [作成] をクリックして Visual Basic エディターを開く
    Visual Basic エディターのコードウィンドウに、下記のExcelマクロを記述する

  • PERSONAL.XLSB:
    Excelの個人用マクロ ブック
    このブックに保存されたマクロは、Excelを起動するたびに自動的に読み込まれ、すべてのExcelファイルで利用可能になる
    初期状態では作成されていないため、最初に個人用マクロ ブックを作成しないといけない
  • 個人用マクロ ブックの作成方法
    [開発] タブの [コード] グループで、[マクロの記録] をクリックする
    [マクロ名] ボックスは、デフォルトのままで、
    [マクロの保存先] リストで、個人用マクロ ブックをクリックする
    [OK] をクリックする
    [開発] タブの [コード] グループで、[記録終了] をクリックする
    Excelを閉じると、個人用マクロ ブックの変更を保存しますか?と聞かれるので、[保存(S)]で保存する
    保存場所:C:\Users<ユーザー名>\AppData\Roaming\Microsoft\Excel\XLSTART
  1. クイック アクセス ツール バーにマクロ ボタンを追加する
    [ファイル]、[オプション]、[クイック アクセス ツール バー] の順にクリックする
    [コマンドの選択] ボックスの一覧で、[マクロ] をクリックする
    [PERSONAL.XLSB!PDF形式で保存]をクリックする
    [追加] をクリックして、クイック アクセス ツール バーのボタンの一覧にマクロを移動する
    [OK] をクリックする

クイック アクセス ツール バーに新しいボタンが表示され、これをクリックしてマクロを実行できる。

Excelマクロ

PERSONAL.XLSB
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共通のコマンドになります。

  1. クイック アクセス ツール バーにコマンド ボタンを追加する
    [ファイル]、[オプション]、[クイック アクセス ツール バー] の順にクリックする
    [コマンドの選択] ボックスの一覧で、[すべてのコマンド] をクリックする
    [PDF または XPS 形式で発行]をクリックする
    [追加] をクリックして、クイック アクセス ツール バーのボタンの一覧にコマンドを移動する
    [OK] をクリックする

クイック アクセス ツール バーに新しいボタンが表示され、これをクリックしてコマンドを実行できる。

  • コマンドを実行すると、ファイルを自動的に開きます。
  • コマンドの実行に、ファイルの保存は必要ありません。

おまけ

私は、PDFビューアにsumatra PDFというアプリを使っています。
このアプリは、PDFファイルを開いた状態で、そのファイルが上書き保存されると、即座に描画を更新してくれます。
Word/Excelマクロでは、OpenAfterExport:=False/OpenAfterPublish:=Falseにすることで、ファイルを自動的に開かずに、上書き保存だけすることができるので、この動作と組み合わせると、便利です。

以上

Discussion