【連載】#16 Accessのマクロを細かく調整し、おしゃれに自動化する方法を説明します

【連載】#16 Accessのマクロを細かく調整し、おしゃれに自動化する方法を説明します
【連載】#15 CSVファイルを直接Accessのテーブルにインポートする方法を説明します

今回はここまでに作成した マクロ を自動化に向けて調整しもっと使いやすくする方法について紹介します。

【連載】#16 Accessのマクロを細かく調整し、おしゃれに自動化する方法を説明します
しらかば堂

いつも記事を読んで頂きありがとうございます~
今日の調子はいかがですか?

この記事で紹介すること

この記事では次のようなテーマを順に紹介します。

  1. マクロテーブル を生成、削除等するタイミングで毎回ポップアップし
    OK ボタンを押さないといけない ダイアログボックス を抑制する
  2. マクロ がきちんと実行され処理が終了したか確認するために
    処理が終わったらその旨がわかる メッセージボックス を表示する
  3. ここまでに作った マクロautoexec マクロ から起動し
    Access が起動されたら自動実行されるようにする
  4. 全ての処理が終了したら Access を終了させる

つまりこれらを実装した、 Access ファイルをダブルクリックすると

  • ユーザーのダウンロードフォルダに保存された CSV ファイルを
    自動的にインポートし
  • ここから必要な部分のみを抽出してマスタテーブルを作成し
  • このマスターテーブルをデスクトップ上の Excel ファイルへエクスポートし
  • ユーザーに「できましたよ」とお知らせし
  • 自動的に終了する

そんなことができる子になります。


手塩にかけて育てるかいがあるでしょ?

感覚的には、こういった仕組みを持たずにこれらを手作業で実行すると20~30分といったところでしょうか。

それがPCの性能にもよりますが10数秒でできてしまいます。


すごいと思いませんか?

しかもこの作業を毎月やらないといけないといった状況があったとするとAccess で作ってこういったツールを作れるか、作れないかの差は圧倒的です。

想像してみましょう。

上司や周りの同僚、部下たちがどんな眼差しであなたを見るようになるかを。

そして余った時間は、より知的な生産活動やさらに自分自身をパワーアップするための時間に当てるんです。

アフターファイブには素敵なパートナーとの素敵な時間が待っているかもしれませんね。

わくわく(笑)。

動画確認

それではいつものように今回の作業の流れを実際に次の動画で何回か確認しておきましょう。
見づらいときは画面をフルスクリーンにすることをお勧めします。

どうでしょう。

今回はマクロの中に4つの新しいアクションを追加しています。
これらのアクションの追加の仕方は動画を見ていただいたほうがわかりやすいと思うのでそちらをご覧ください。

これ以降は動画の中で登場したアクションの位置づけ等について補足説明します。

メッセージの設定アクション

まず、今回
M0000_作成_東京都コロナ発症状況_マスタ の先頭に追加された
「メッセージの設定(いいえ)」
 アクション について紹介します。

次の画像の中の上の赤枠で囲った アクション です。

【連載】#16 Accessのマクロを細かく調整し、おしゃれに自動化する方法を説明します

動画を見ていただくとわかると思いますが

Access
は作成したクエリ 等で

  • 新しいテーブルを作成すために、以前あった同名のテーブルを
    削除するケース
  • 単純にテーブルを削除するケース

等でユーザーヘの注意を促す意味で 警告ダイアログ を表示し、ユーザーに本当にこの テーブル を消していいのかという確認を毎回求めるようになっています。

ポーン♪ ポーン♪
ってなかなかの音ですよね。

これは単体の クエリ の動作として安全サイドに倒しているという意味で期待通りの動きなのですが

マクロ の中でこれらの クエリ を呼び出す場合、毎回これを聞かれるのではたまったものではありません。

だっていいと思っているから マクロ に組み込んでるんですから。

そもそも毎回 OK ってクリックするするためにPCの前に張り付いていたら自動化の意味がないですよね。

お手洗いに行くことだってできやしない。

動画の中で M0000_作成_東京都コロナ発症状況_マスタ マクロ の一番上に配置した「メッセージの設定(いいえ)アクション はこれらの ダイアログボックス のポップアップを抑制する、地味ですが、いい仕事をする アクション です。

ちなみに マクロ の一番上に配置するのには理由があります。

この「メッセージの設定(いいえ)アクション はこのアクション が実行されたらそれ以降の ダイアログボックス のポップアップを抑制するんです。

つまりこれが マクロ の途中にあったらそれ以前の アクション に対してはメッセージ抑制が効かないので効果半減ですよね。

だから一番上に配置するんです。

あなたも動画をよく見てその設定方法を確認し、出来ればそれを自分でもやってみてその効果を体感くださいね。

メッセージボックスアクション

まず、今回
M0000_作成_東京都コロナ発症状況_マスタ の最後尾に追加された
メッセージボックス」 アクション について紹介します。

おや?

この「メッセージボックス」って以前どこかで見ましたよね

そうです。

前に

【連載】#02 はじめの一歩 Access を起動して VBA プログラムを動かしてみよう

の記事の中で Access VBA関数 の中から上司の悪口(違う違う..)「早く帰りたい!」っていう メッセージボックス を出すプログラムを作りましたよね。

機能的にはあれと同じです。

でも なぜ VBA 側と、マクロ 側に同じような機能があるんでしょうね?

考え方はこうです。

  • マクロ の中では マクロ 側の メッセージボックス アクション を使う
  • VBA の中では VBA の MsgBox 関数を使う

ある意味シンプルですよね。

ところで、そもそもなぜこの アクションM0000_作成_東京都コロナ発症状況_マスタ マクロの
最後尾、つまり下の図の下の赤枠の位置に置くのでしょうか?

【連載】#16 Accessのマクロを細かく調整し、おしゃれに自動化する方法を説明します

マクロを実行する(マクロ名) アクション

ところであなたは疑問に思いませんでしたか?

なぜ マクロ の名前を最初から autoexec にしないで
M0000_作成_東京都コロナ発症状況_マスタ マクロ
とかいう名前とし、以下のようにそれを autoexec マクロ から実行する必要があるんだろう? と


それは次の2つの理由からです。

  • 先ほどの「メッセージの設定(いいえ)」 アクション を追加したことで
    この マクロ は全ての アクション を黙って実行するようになったけれど
    逆に言うといつ終わったのかよくわからなくなった
  • 特に テーブルエクスポート先ファイル名 このツールを作ったあなたにしかわからない。いやあなたでさえしばらくするとそういった情報をほぼ忘れる

なので、このメッセージボックスには

デスクトップに [T0000_東京都コロナ発症状況_マスタ.xlsx] をエクスポートしました」

というようにこれらの エクスポート先ファイル名がわかるメッセージを表示するようにする訳です。

【連載】#16 Accessのマクロを細かく調整し、おしゃれに自動化する方法を説明します

結論をいえばこれは

マクロを「ある意味をもったかたまり」にまとめてこれに名前をつけ
その名前で処理を記述することでマクロを読みやすくするためです。

たとえば先ほど見て頂いた動画で扱っている
この 16_01.accdb というファイルは
今後の連載記事の中で以下のような3種類のグラフ

  1. コロナウイルスによる入院者数と退院者数比率推移
  2. コロナウイルスの男女別感染者数推移
  3. コロナウイルスの世代別感染者数推移

を描画するのに必要な テーブル 整形の処理を追加しようと思っています。

それらを全部を1つの autoexec マクロに直接書いてしまうと、どこからどこまでが何のための クエリアクション なのかがわからなくなるでしょ?

なのでそういった アクションクエリ を「ある意味をもったかたまり」にまとめてこれに名前をつけ、マクロを読みやすくする必要があるんです。

ある マクロ を他の マクロ から呼び出す
マクロを実行する(マクロ名) アクション
はそういった記述を可能とするための いけてる アクション です。

Access の終了 アクション

最後は autoexec マクロ の中で呼び出す Access の終了 アクションです。

これは正直そのまんまですが、マクロ の中でこの
Access の終了(すべて保存) アクション
を実行するとAccess は開いている テーブル を全て閉じそれを保存して .accdb ファイルを閉じます。

つまりこの 
Access の終了(すべて保存) アクション 
は自動処理を開発するうえで非常に重要な役割、つまり処理が終わったらアクセスを閉じるという処理を行います。

これはどういうことでしょうか?

逆にこの Access の終了(すべて保存) アクション がないとどうなるか想像してみてください。

きっと決められた処理が終わった後、あなたはこの Access ファイルを手動で閉じるためにPCの前に戻らないといけませんよね。

めんどくさくないですか?

このめんどくささを解消する渋い仕事をする アクションそれが 
Access の終了(すべて保存) アクション
です。

そしてこの アクション は 記述された .accdb ファイル全体に影響を及ぼすので機能的に autoexec に記述するのが望ましいと思います。

まとめ

いかがでしたか?
今回は

  • メッセージの設定アクション
  • メッセージボックスアクション
  • マクロを実行する(マクロ名) アクション
  • Access の終了(すべて保存) アクション

という4つの アクション について紹介しました。

これらの アクション をうまく使うことで、あなたの作ろうとしている マクロ は輝きを増し、あなたの仕事を強力にサポートします。

さてこの記事全体の目標は

  • 今の状況から抜け出してもっと前向きな仕事に取り組みたい
  • さっさと仕事を切り上げて充実したアフターファイブを過ごしたい

でしたよね。

あなたの解決したい問題は何ですか?


次回はまた

【連載】#17 他のAccessファイルのテーブルを参照して再利用する方法を説明します

Access VBA の新しい窓を開きましょう。


Microsoft Access 関連教材は次のリンクからどうぞ。

Access VBA 関連教材の紹介


(有償)本記事中で作成した 16_01.accdb から個人のPC環境に依存する部分を削除した 16_02.zip のダウンロードは次のリンクからどうぞ。

(有償) 16_02.zip をダウンロードする