For reference when creating a website
MK-BLOG
ホーム > MK-BLOG:ホームページ制作の参考に > ディレクターとAIの奮闘記!~デザインでお金を~ > 更新・クリア・PDF出力をボタン一つで。Excelの簡単マクロで、毎月の手作業を終わらせる方法

更新・クリア・PDF出力をボタン一つで。Excelの簡単マクロで、毎月の手作業を終わらせる方法

AIが自動化(マクロ)を提案するシーン

前回の#022では、集計画面をA4一枚のPDFにして、社長に渡せるようになりました。セロハンテープの15分も消えて、ディレクターは満足です。ところが、翌月の月初、同じ作業をしながら、ふと手が止まります。

「毎月、同じことを、同じ順番で」

ディレクターディレクター:
「更新を押して、スライサーをクリアして、PDFに出力して、ファイル名に日付を入れて……。先月とまったく同じ手順を、一字一句たどっている自分に気づきました。」

AIAI:
「毎月、同じ順番で、同じことをしているなら、それはもう人間の仕事ではありません。マクロの出番です。」

ディレクターディレクター:
「マクロ……。黒い画面に、英語の呪文がびっしり並んでいる、あれですよね。私には、まだ早いのでは。」

AIAI:
「画面は黒くありません。白いです。呪文も、今日は10行ほどです。」

マクロは、「手順を覚えてくれる部下」

ディレクターディレクター:
「そもそも、マクロって何なんですか。」

AIAI:
「Excelの操作の手順を書き留めておいて、ボタン一つで、順番どおりに全部やってくれる仕組みです。新入社員に手順書を渡して、『毎月これをやっておいて』と頼むのと同じです。」

ディレクターディレクター:
「その新入社員は、文句を言いませんか。」

AIAI:
「言いません。ただし、手順書に書いていないことは、一切やりません。融通は、まったく利きません。」

本質パート:マクロを作って、ボタンに登録する

手順は、大きく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
マクロを作って、ボタンに登録する

ディレクターディレクター:
「……本当に、10行ちょっとですね。しかも、半分は、日本語が混ざっています。」

AIAI:
「シングルクォート(')で始まる行は、人間向けのメモで、Excelは読み飛ばします。手順書の余白の、書き込みだと思ってください。」

コードの意味は、次の表のとおりです。1・2・3は、#019〜#022で、手作業でやってきたことに、そのまま対応しています。

コードの塊やっていること手作業での呼び名
RefreshAllピボットテーブルとグラフを、最新の状態にするデータタブ → すべて更新(#019)
ClearManualFilterすべてのスライサーの選択を解除するフィルターのクリア(#020)
ExportAsFixedFormatシート「集計画面」を、PDFにして保存するエクスポート → PDF(#022)

ひとつだけ、書き換えるところがあります。Worksheets("集計画面") の「集計画面」は、PDFにしたいシートの名前です。シート名が違う場合は、ここを自分のシート名に直してください。印刷範囲やA4・横の設定は、#022で済ませてあるので、そのまま使われます。

④ボタンに登録する

1. 集計画面のシートに戻る
2. 挿入タブ → 図 → 図形 から、四角形などを選んで、ドラッグで描く
3. 図形の中に「月次レポートを出力」と文字を入れる
4. 図形を右クリック → マクロの登録 → 「月次レポート出力」を選んで OK

これで、図形が、ボタンとして働くようになります。押すと、更新、クリア、PDF出力が、順番どおりに実行されます。図形の色は、#017のコーポレートカラーに合わせると、集計画面になじみます。

初めてボタンを押す日

ディレクターディレクター:
「押します。……押しました。画面が一瞬ちらついて、『PDFを出力しました』と出ました。」

AIAI:
「所要時間は、何秒でしたか。」

ディレクターディレクター:
「3秒くらいです。#022で数えた15分は、何だったのでしょう。」

AIAI:
「最初の1回は、人間が手順を考える時間です。2回目からは、ボタンの時間になります。」

ディレクターディレクター:
「ところで、社長が、これを面白がって、ボタンを何度も連打していました。」

AIAI:
「#020の、エレベーターのボタンを全部押す子どもと、同じですね。ご安心ください。同じ月のファイル名は同じなので、上書きされるだけです。ただし、PDFを開いたままだと、エラーになります。」

「マクロの記録」は、便利だけれど

開発タブには、「マクロの記録」というボタンもあります。自分の操作をそのまま録画して、マクロにしてくれる機能です。ただ、今回のようなスライサーのクリアなどは、うまく記録されないことがあります。また、操作を間違えたところまで、忠実に記録されてしまいます。

AIAI:
「言い間違いまで、そのまま録音されるボイスレコーダーのようなものです。」

ディレクターディレクター:
「私の『えーっと』が、毎月再生されるのは、困りますね。」

初めは、今回のようなコードを貼り付けて動かし、動いたものを少しずつ書き換えていく進め方が、いちばん安全です。

つまずきやすいところ

「マクロが無効になっています」と出たら

.xlsmのファイルを開くと、黄色いバーで、マクロが無効になっていると表示されます。自分で作ったファイルであることを確かめたうえで、「コンテンツの有効化」を押します。メールやネットからダウンロードしたファイルは、ファイルを右クリック → プロパティ → 「許可する」(ブロックの解除)にチェックを入れてから開くと、有効にできます。

知らない人のマクロは、むやみに有効にしない

マクロは、パソコンの中のファイルを操作できる、強力な仕組みです。そのため、出どころの分からないファイルのマクロは、有効にしないでください。今回のように、自分で書いた、中身が分かるものだけを有効にします。

保存先がクラウドだと、止まることがある

ブックを、OneDriveなどのクラウド上のフォルダに置いていると、ThisWorkbook.Path がURLになり、PDFの保存でエラーになることがあります。その場合は、保存先を、次のように、パソコン内のフォルダに直接指定します。

pdfPath = "C:\Users\ユーザー名\Documents\集計画面_" & Format(Date, "yyyy-mm") & ".pdf"

シートやスライサーの名前を変えたら

コードの中のシート名「集計画面」は、シート名を変えると、動かなくなります。名前を変えたときは、コードの名前も、あわせて直してください。

今日のまとめ(AIと一緒に)

ディレクターが「3秒」で完了したことに驚きと満足感を感じているシーン

AIAI:
  1. 1.「開発」タブを表示して、「.xlsm」で保存し、標準モジュールにコードを貼り付ければ、マクロが作れる。
  2. 2.更新、スライサーのクリア、PDF出力は、10行ほどのコードで、ボタン一つにまとめられる。
  3. 3.マクロは、自分で作った、中身の分かるファイルだけ有効にする。保存先やシート名が変わったら、コードも直す。
ディレクターディレクター:
「これで、月初の作業は、ボタン一つになりました。毎月の15分が、3秒です。」

AIAI:
「年間3時間のうち、ほぼ全部を取り戻しましたね。あとは、そのボタンを、社長に連打されないことを祈りましょう。」

ディレクターディレクター:
「連打されても、上書きされるだけなので、大丈夫です。……たぶん。」

AIAI:
「その『たぶん』が、次回のテーマです。」

次回#024では、マクロがエラーで止まってしまったときに、慌てずに原因を見つけて直す方法を扱う予定です。

ディレクターとAIの奮闘記 #023 おわり