前回の#022では、集計画面をA4一枚のPDFにして、社長に渡せるようになりました。セロハンテープの15分も消えて、ディレクターは満足です。ところが、翌月の月初、同じ作業をしながら、ふと手が止まります。
ディレクター:
AI:
ディレクター:
AI:
ディレクター:
AI:
ディレクター:
AI:手順は、大きく4つです。順に進めていきます。
ファイルタブ → オプション → リボンのユーザー設定
→ 右側の一覧で「開発」にチェック → OK
マクロの作成は、この「開発」タブから行います。最初は、リボンに表示されていないので、一度だけ表示の設定をします。
ファイルタブ → 名前を付けて保存
→ ファイルの種類:Excel マクロ有効ブック (*.xlsm)
通常の「.xlsx」のままだと、マクロは保存されません。保存し忘れて閉じると、せっかく書いたマクロが消えてしまいます。#017でテンプレートにしている場合は、「.xlsm」と「.xltx」の使い分けにも注意してください。
1. 開発タブ → Visual Basic(または Alt + F11)
2. メニューの 挿入 → 標準モジュール
3. 開いた白い画面に、下のコードを貼り付ける
Sub 月次レポート出力()
' 1. すべて更新(ピボットテーブルとグラフ)
ThisWorkbook.RefreshAll
Application.CalculateUntilAsyncQueriesDone
' 2. スライサーをすべてクリア
Dim sc As SlicerCache
For Each sc In ThisWorkbook.SlicerCaches
sc.ClearManualFilter
Next sc
' 3. PDFで出力(ファイル名に年月を入れる)
Dim pdfPath As String
pdfPath = ThisWorkbook.Path & Application.PathSeparator & _
"集計画面_" & Format(Date, "yyyy-mm") & ".pdf"
ThisWorkbook.Worksheets("集計画面").ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=pdfPath, _
Quality:=xlQualityStandard, _
OpenAfterPublish:=False
MsgBox "PDFを出力しました。" & vbCrLf & pdfPath
End Sub
ディレクター:
AI:コードの意味は、次の表のとおりです。1・2・3は、#019〜#022で、手作業でやってきたことに、そのまま対応しています。
| コードの塊 | やっていること | 手作業での呼び名 |
|---|---|---|
| RefreshAll | ピボットテーブルとグラフを、最新の状態にする | データタブ → すべて更新(#019) |
| ClearManualFilter | すべてのスライサーの選択を解除する | フィルターのクリア(#020) |
| ExportAsFixedFormat | シート「集計画面」を、PDFにして保存する | エクスポート → PDF(#022) |
ひとつだけ、書き換えるところがあります。Worksheets("集計画面") の「集計画面」は、PDFにしたいシートの名前です。シート名が違う場合は、ここを自分のシート名に直してください。印刷範囲やA4・横の設定は、#022で済ませてあるので、そのまま使われます。
1. 集計画面のシートに戻る
2. 挿入タブ → 図 → 図形 から、四角形などを選んで、ドラッグで描く
3. 図形の中に「月次レポートを出力」と文字を入れる
4. 図形を右クリック → マクロの登録 → 「月次レポート出力」を選んで OK
これで、図形が、ボタンとして働くようになります。押すと、更新、クリア、PDF出力が、順番どおりに実行されます。図形の色は、#017のコーポレートカラーに合わせると、集計画面になじみます。
ディレクター:
AI:
ディレクター:
AI:
ディレクター:
AI:開発タブには、「マクロの記録」というボタンもあります。自分の操作をそのまま録画して、マクロにしてくれる機能です。ただ、今回のようなスライサーのクリアなどは、うまく記録されないことがあります。また、操作を間違えたところまで、忠実に記録されてしまいます。
AI:
ディレクター:初めは、今回のようなコードを貼り付けて動かし、動いたものを少しずつ書き換えていく進め方が、いちばん安全です。
.xlsmのファイルを開くと、黄色いバーで、マクロが無効になっていると表示されます。自分で作ったファイルであることを確かめたうえで、「コンテンツの有効化」を押します。メールやネットからダウンロードしたファイルは、ファイルを右クリック → プロパティ → 「許可する」(ブロックの解除)にチェックを入れてから開くと、有効にできます。
マクロは、パソコンの中のファイルを操作できる、強力な仕組みです。そのため、出どころの分からないファイルのマクロは、有効にしないでください。今回のように、自分で書いた、中身が分かるものだけを有効にします。
ブックを、OneDriveなどのクラウド上のフォルダに置いていると、ThisWorkbook.Path がURLになり、PDFの保存でエラーになることがあります。その場合は、保存先を、次のように、パソコン内のフォルダに直接指定します。
pdfPath = "C:\Users\ユーザー名\Documents\集計画面_" & Format(Date, "yyyy-mm") & ".pdf"
コードの中のシート名「集計画面」は、シート名を変えると、動かなくなります。名前を変えたときは、コードの名前も、あわせて直してください。
AI:
ディレクター:
AI:
ディレクター:
AI:次回#024では、マクロがエラーで止まってしまったときに、慌てずに原因を見つけて直す方法を扱う予定です。
ディレクターとAIの奮闘記 #023 おわり