DoCmd(RunCommand)の意味するところ

アクセスのメソッドはコードで記述するとき「DoCmd」で始まる。「Do+Cmd」、すなわち「Do Commad」、直訳すると 「コマンドの実行」ということである。しかし、マクロのアクションにも「コマンドの実行」というものがある。よって私的には、DoCmdは「アクセスメソッドの実行」ということだと理解している。
マクロの「コマンドの実行」をVBAに変換してみると、DoCmd.RunCommandとなる。VBAのヘルプでRunCommandメソッドを調べてみても引数の説明がほとんどない。何故だろうと思っている初心者もいるかもしれないが、これはRunCommandメソッドが「アクセス(のメニュー)コマンドの実行」を意味するからである。
もう少し詳しく解説しましょう。例えば、マクロの新規作成でアクションに「コマンドの実行」、アクションの引数に「1000%に拡大」を選択する。これをアクセスの標準メニューバーから探してみる。でも最初は見つからない。アクセスを利用するユーザーなら分かるが、メニューコマンドは選択されたオブジェクト(フォームやレポートなど)によって絶えず変更されているのである。
新規にレポートを作成して、名前はデフォルトの「レポート1」とする。何かラベルを配置して保存した後、表示してみる。すると、アクセスのメニューバーの「表示」→「ズーム」に「最大1000%」というメニューがでてくる。実行してみるとレポートは拡大する。
ピンときた読者もいるだろうが、これがコマンドの実行の真実である。マクロ「コマンドの実行」において、「アクションの引数」はこうしたアクセス標準のメニューコマンドである。よって、VBAに説明はほとんどない。ちなみに、マクロが同じことをしているという確認をするためには、前記のマクロの「コマンドの実行」の前に、アクション「レポートを開く」、引数:レポート名「レポート1」、引数:ビュー「印刷プレビュー」を設定する。実行すると拡大されたレポートが表示されるだろう。
少し話がずれたが、アクセスのメニューで実行している作業をVBAに置き換えて自動化するということは、プログラミング作業の中で多々ある。メソッドで見当たらない場合でも、RunCommadメソッドの引数を探してみよう。きっと、ほとんどの目的を達成できるはずである。