今日はAccessのマクロについて触れてみます。

マクロは、要するに作業の自動化のことです。

●Excelのマクロはおススメしません
Excelはよくマクロについて触れられることがあり、マクロが作れるかどうかが、Excelの「出来る」「出来ない」の指標のように捉えられたりもします。

けれど、私はExcelのマクロはおススメしません
なぜなら作業の内容が隠れてしまい、属人化するからです。
「その人が居なくなったので、マクロがメンテナンス出来なくなり作業が出来なくなりました」
「今までマクロでやっていたので、何をやるべきなのかも分からず、ずっと間違ったデータを出していました」
なんてことはざらにあります。
私の友人も異動で部署が変わった時に、前任のわけのわからないところで使われているマクロに四苦八苦しているということを話していました。

とかく、特に他人の作ったExcelのマクロは分かりにくいものなのです。


●Accessのマクロはおススメです!
対して、Accessのマクロは非常に便利だと考えています。
なぜなら作業が可視化できるからです。マクロ6
上記がマクロの1例になります。
全部で5行ありますが、1行1工程です。
内容は
①メッセージを表示しない
②クエリB01 〇〇を動かす
③クエリB02 〇〇を動かす
④クエリD01 〇〇をExcelにエクスポートする
⑤Accessを自動終了する

行わなければいけない仕事の工程が一連の流れとして明記されています。
なので作業だけで良いのであれば、引継ぎや平準化がしやすく、その点で非常に重宝するのです。

【マクロの作り方】
1.作成>マクロを押す
これでマクロの作成画面に移ります。
マクロ1


2.すべてのアクションを表示
何もしないと「アクションカタログ」だけが作成できますが、
最後のファイルの出力や自動化の観点を含めると「すべてのアクションを表示」を選ぶことが普通になると思います。
マクロ2


3.基本は「新しいアクションの追加」で選択をしていく

マクロ3
私はいつも一番最初に「メッセージの設定 →いいえ」を選択するので、
練習がてらやってみる場合は同様のものを選んでください。

これを選ぶと、テーブル作成クエリなどの時に「〇〇件ですが作成しますか はい/いいえ」みたいなメッセージを出さずに先に進めることが出来ます。
これが出ると自動化にならない(メッセージのところで止まってしまう)ので、これをまず排除するわけです。


4.ドロッグ&ドロップでも作成ができる
私は基本的にこの方法でクエリを追加していっていますので、ご参考まで。
マクロ4
どのクエリを動かすか、についてですが、
・テーブル作成クエリ
・追加クエリ
・更新クエリ
・削除クエリ

を動かすべきで、選択クエリやクロス集計クエリは動かさなくて良いというのが私の意見です。

なぜか?
選択クエリ、クロス集計クエリは計算上必要ではありますが、作業としてはデータを作るわけではないので、作業としては飛ばしても問題ないからです。

ゆえにここでは、B01とB02の2つのテーブル作成クエリのみを追加している形です。


5.完成ファイルをエクスポートする
大抵の仕事ではAccessで作ったデータをExcelに出力する作業があると思います。
Accessのバージョンによって異なりますが、Access2013の場合はExcelにエクスポートしたい場合、「スプレッドシートのインポート/エクスポート」を選択します。

変換の種類:インポート or エクスポート を選択します。入力ならインポート、出力ならエクスポートです。

スプレッドシートの種類:ExcelもしくはLotusの種類を選びます。

テーブル名:出力したいテーブルorクエリを入力します。なお、テーブル名とありますが、テーブルでもクエリでも大丈夫です。下記ではクエリ名を選んでいます。

ファイル名:出力したい場所とファイル名を入力します。
今回は下記のように入力しました。
="C:\Users\light\Documents\エクスポート_"&format(now(),"YYYYMMDD")&".xlsx"

・イコールを最初に入れます。エクセルの関数と同じですね
・\ のところは、円マークを入れて下さい
・基本的に ” " で区切ってファイル場所や名前、拡張子を指定
します
・&で区切って関数を入れます。ここではファイル名に出力した年月日を含ませています
・Excelファイルの場合は、拡張子はxlsx。2003以前の旧バージョンの場合は、xlsです。

これで出来上がるファイルは
lightさん(ユーザー名)のドキュメントファイル上に、「エクスポート_20170518」という名前のExcelファイルとなります。


6.最後にAccessの終了
これはお好みになりますが、私はこれを入れています。
理由は、これが無いといつ作業が完了したのか分からないからです。

一旦マクロボタンを押して、他の仕事をして、
気付いた時にAccessが閉じていれば作業終了、まだ立ち上がっていれば作業中という判断をしています。


完成したマクロは下記の通り
マクロ5
ポイントはエクスポートです。
手動で行う場合は、どこにどういう名前で出力すればいいのか迷いますが、マクロになっていると自動で出来ますし、どこにどう出すかも可視化できます

ぜひお試しください!


AccessVBA逆引き大全 600の極意 2016/2013/2010/2007対応
E-Trainer.jp 中村俊
秀和システム
2017-06-27