Accessのノウハウ(マクロは使わずVBAを使おう)

今回の記事は、私と、私の近くのVBAのエキスパートの意見です。

異論もあるかもしれませんし、マクロの活用事例もあるとは、思いますが、
あくまで、「マクロで痛い目にあった事のあるユーザ」の意見と思ってください。

Accessでは「マクロは使わず、VBAで対応すべき」です。

1.Accessの自動化

Accessの自動化には、VBA以外にマクロという手段があります。
■マクロ
手順登録のイメージです。
例えば、あるボタンで、削除クエリ→追加クエリなどを連続して実行できます。
(↓マクロのデザイン画面のイメージです)
■VBA
ExcelのVBAとほぼ同じイメージです。手順登録はもちろん、基本的には何でも出来ます。

2.マクロに触れる局面

VBAに比べ、マクロの方がとっつきが良いので、
初心者向けの本や、講習会で、案内されていることが多いです。

3.マクロを薦めない訳

ですが、私は以下の理由からオススメしません。
1.見にくい。
他の人が見たときに、あまり分かりやすくない気がします。
(目が慣れていないせいもあるかもしれませんが、古いバージョンのAccessのマクロは、もっとわかりやすかったと思います。)
2.拡張性が低い
マクロで出来ることには限りがあり、もう少し先のステップだとVBAを使わざるをえない局面が出てきます。
例えば、ファイルのインポートとかはVBAで書きます。
マクロ上で「プロシージャの実行」というメニューで、VBAを実行することになり、
マクロとVBAが混在することになり、かえってわかりにくいです。
3.VBAの方が、プログラム全体を、俯瞰的に見ることが出来る。
マクロは、一つずつ開かないと、何をやっているかわからない。
↓VBAだと、どんな処理しているか、すぐわかる
 この場合は「cmd_import」というボタンをクリックするプロシージャ(手続きの固まり)
4.マクロは、メンテナンスするのに時間がかかる。
クエリ名を変更した時などは、一つずつ修正が必要となる。
VBAなら式の一部を直せばいいし、処理のクエリの追加があれば、一行書き足せば良い。
5.VBAが出来る人は、殆どマクロを触った事が無いため、修正を依頼されると
とっつきが悪い上、直すのに時間がかかるため、ウンザリされる。
6.VBAのコードとマクロの手続き登録は、覚えることは、そんなに変わらない。
DoCmdさえ覚えれば、とりあえずOKです。
■マクロ:新しいアクションの追加/クエリ/”Q_101_明細_削除”(クエリ名を登録)
■VBA: DoCmd.OpenQuery “Q_101_明細_削除”

4.体験談

もう10年以上前ですが、初心者時代に作ったマクロは結果的にVBAに書き直す羽目になりました。
最低限でもVBAのスキルがついた目で見ると、自分でもメンテナンスに時間がかかりすぎてウンザリするのです。
また他の人が作ったAccessで何をやっているか調べる時も、VBAで書いてあれば一発でわかるのに
マクロだと、一つずつマクロを開いて、手順を見なくてはいけないので、とても時間がかかります。
「これが動かないんですけど」と言われて、「あ、マクロのついているやつだ」と思うと、まずはげんなりします。

5.マクロでやっている程度であれば、VBAは難しくない。

モノにもよりますが、マクロで実行していた程度のことであれば、それほど苦労せず、マスター出来ます。
VBAは、とりあえず、フォームボタンを作って、イベントタブで、「クリック時」に「コードビルダー」を選択すれば
箱を作ってくれるので、そんなに難しくないです。
もちろん、もっと深いことをやろうとしたら、色んな沼があるんですが。
(私もそんなにスキルは高くないです)
Accessではマクロを後から悲しい気持ちで直すことを考えたら、
VBAを少しずつ覚えていくコストの方が安いと、つくづく思います。