Access 2010 の AutoKeys マクロの作り方

前回ネタ「Access 2010 でマクロがXML化した?」からの続き
仕事が一段落したところで、再び考えてみた。
Access 2007までの作り方で、Access 2010の変更時に問題なのは「アクションが空」であることです。ということは、何かアクションを指定して何事もなく終了する、という処理が一番良さそうだ。
ということで2010で新規でマクロを作ってみる。
Access 2010 の AutoKeys マクロの作り方
まず、先頭の「マクロ名」に当たる項目には「サブマクロ」を選択する。
Access 2010 の AutoKeys マクロの作り方
そして、名称として今までどおりSendKeys仕様で「ファンクション名」を指定する。
Access 2010 の AutoKeys マクロの作り方
次に「アクション」に当たる項目、ここが今までは空白だった訳だけど、2010では空は許されていないので、とりあえず「イベントの取り消し」(Docmd.CancelEvents)を指定する。
Access 2010 の AutoKeys マクロの作り方
これでファンクションキー1つ分が完成。
Access 2010 の AutoKeys マクロの作り方
あとは必要なファンクションを同じように作る。
単独キーでAccessで必要なのは
「F2」 ・・・ 編集状態のON・OFF
「F4」 ・・・ コンボボックスのリスト表示のON・OFF
の2つのみ。他はすべて運用時には止めるのが無難だろう。
Access 2010 の AutoKeys マクロの作り方
とここでひとつ問題が発生!
「イベントの取り消し」というアクションはキャンセルが有効なイベントの最中に該当キーを押されると、イベントがキャンセルされてしまうことが判明。
他のイベントに影響ないアクションを探した。
そこで見つけたのは「マクロエラーのクリア」というマクロ。マクロ実行中のエラーで蓄積されたエラーコードをクリアするアクション。マクロはAutoKeysのみなのでこれは他に影響を与えない。
他に適当なのは「警告音」(Beep)ぐらいか。押したファンクションキーが無効になった合図にビープ音を鳴らすのも良いかも。
Access 2010 の AutoKeys マクロの作り方
こうして作成したマクロをAccess 2007でデザインモードにすると、上のように見える。2010のXML形式はコメントとして下に残り、中のアクションが抽出されて上に並んでいる。
(「マクロ名」が見えない場合は、「デザイン」タブの「マクロ名」をクリック)
Access 2010で作成したマクロはそのまま動作するし、2007で変更したマクロ(上の今までの形式で変更する)も2010で動作する。
※今日時点の最新のサービスパック、アップデートを適用済み。
Access 2010 の AutoKeys マクロの作り方
しかし、Access 2003では真っ白でマクロは定義されていないものとして、変更すると上書きされてしまって、2010で作ったものがなくなる。2003では互換性がないようだ。
ここまでの結果をまとめると、
■Access 2003で新規作成したAutoKeysマクロ
 ○Access 2007で動作する
 ○Access 2010で動作する
■Access 2007で新規作成したAutoKeysマクロ
 ○Access 2003で動作する
 ○Access 2010で動作する
■Access 2010で新規作成したAutoKeysマクロ
 ×Access 2003で動作しない
 ○Access 2007で動作する
マクロの形式は過度期で、Accessの次バージョンの状況を見るまでは方針を決められないところはあるが、今までの資産からAccess2010以降へ移行するためにも、「アクション」は空にせずに、何か指定しておくと移行がスムーズになるだろう。