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

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

名前の自動修正機能

今日からAccessのTipsを少しずつ公開する。まずは、Access2000以降の機能である「名前の自動修正」機能を紹介する。
この機能一見便利なように思えるが、実はシステム開発者から見るとかなりのクセモノである。まず自動修正機能が完全ではない。フォームやレポートのコードがほとんど修正対象に入っていない。もっと問題なのは、オブジェクトが増えてきたときにアプリケーション自体のスピードが遅くなることだ。何故って、保存と同時に毎回名前の変更機能が意味なく動作するからである(ただしMDEを除く)。やはり名前を変更したら関連したところは自分で修正したほうが良い。
アプリケーションが急に遅くなった場合は、オプションの「名前の自動修正」機能がオンになっていないか、まず確認してみよう!