マクロの真価は、自動で集計だけではありません。
その結果を「報告書」「請求書」「月次レポート」といった成果物として出力もできます。
実務では、集計が終わった後に以下の作業が待っています。
- ファイルを最新版として保存する。
- 印刷設定を確認して紙に印刷する。
- 相手に送るためにPDFファイルを作成する。
これら一つ一つは簡単な手作業ですが、毎日繰り返すとなると大きな負担です。
今回は「アウトプット作業」をマクロに任せて、ボタン一発で完了させる方法を学びましょう。

ファイルの安全な「上書き保存」と「名前を付けて保存」
マクロにとって最も基本的な操作は、ファイルの保存です。
1. 上書き保存(最もシンプル)
開いているブック(ファイル)を、そのまま上書き保存します。
Saveメソッド(行動)を利用します。
(オブジェクト).Save
ThisWorkbook.Save

This Workbookはマクロが書かれたファイルのことだよ。
1つのシートに特定できるから、
マクロがどのファイルか悩まずないで保存ミスが起こらないんだ。
2. 名前を付けて保存(バックアップや新規作成)
「名前をつけて保存」にはSaveAsメソッド(行動)を利用します。
(オブジェクト).SaveAs “フルパス”
ファイル名に「日付」などを付けて、新しいファイルとして保存したい場合に役立ちます。
Sub 名前を付けて保存()
' ファイル名を変数に格納(今日の日付を付加)
Dim fileName As String
fileName = "月次報告書_" & Format(Date, "yyyymmdd") & ".xlsm"
' 指定したパス(フォルダ)に保存する
ThisWorkbook.SaveAs "C:\report_data\" & fileName
End Sub

FormatはText関数と同じで文字列を整形するんだ。
今回でいえば、
「Date(今日の日付)を20251220(YYYYMMDD)へ整形」
当然ファイル名は文字列だから
「&」を使うと「.xlsm」とか付けれるよ!
紙に出力する「印刷」の自動化
印刷は、通常は印刷プレビューを開いて設定しますが、
マクロを使えば一瞬で紙に出力できます。
1. 特定のシートを印刷する
特定のシートの全ページを印刷します。
印刷にはPrintOutメソッドを利用します。
Worksheets("請求書").PrintOut
2. 印刷部数とページ数を指定する
部数やページ数を指定することで、無駄な印刷を防ぎます。
PrintOutメソッドで利用する3つのオプションは以下の通りです。
- Copies:= 「何枚印刷するか」
- From:= 「何ページ目から」
- To:= 「何ページ目まで」
Worksheets("報告書").PrintOut _
Copies:=3, _ ' 3部印刷する
From:=1, To:=5 ' 1ページ目から5ページ目まで

オプションを暗記する必要はないよ!
こんなこともできるんだって知っておくだけ。
印刷範囲は事前にレイアウトタブで設定すればいいし!
実務で最も使う「PDF出力」の自動化
取引先や上司への報告は、Excelファイルのままではなく、PDFファイルにすることがほとんどです。これもマクロを使えば一瞬でできます。
PDF出力は、Excelの機能を使うため、コードが少し長くなります。
このコードをそのまま使い、適宜修正しましょう。
Sub PDFを自動作成()
' 1. 保存するフォルダのパスとファイル名を定義
Dim pdfPath As String
pdfPath = "C:\report_data\今月の集計.pdf"
' 2. 特定のシートをPDFとして出力する命令
Worksheets("集計").ExportAsFixedFormat _
Type:=xlTypePDF, _ ' ファイル形式はPDF
Filename:=pdfPath, _ ' 保存する場所とファイル名
Quality:=xlQualityStandard, _ ' 標準品質で出力
IncludeDocProperties:=True, _ ' ドキュメント情報を含める
IgnorePrintAreas:=False ' 印刷範囲を無視しない
End Sub

PDF変換はよく使うよね。
このコードは長いから、手作業で済ませるのも1つの手段だよ。
暗記せずに「PDF変換したいときは、あのコードを引用しよう」って
割り切ることも大切!
今回のクエストを終えて
- 上書き保存は
ThisWorkbook.Saveで一発。 - 名前を付けて保存は
ThisWorkbook.SaveAsで、日付などをファイル名に付加できる。 - 印刷は
Worksheets("名前").PrintOutで設定いらず。 - PDF出力は サンプルコードを利用する前提
これで、「データ収集からレポート出力まで」
マクロがすべてのデスクワークを完了させられるようになりました。








コメント