COM経由でAccessを操作中に、OpenCurrentDatabaseを使用してMDBファイルを開いた場合、自動実行マクロが設定されていると、勝手に動いてしまい意図しない振舞をしてしまう場合がある。
Excelでは、EnableEventというプロパティにより、イベントを抑止することができるが、Accessにはこの趣旨のプロパティは存在していないようだ。
オンデマンドでACCESSを操作している場合には、MDBを開く際にShiftキーを押しっぱなしにすることで、自動実行を抑止できる。
そこで、無理やりながら、Shiftキーの押下をエミュレートした状態で、OpenCurrentDatabaseすることにより自動実行を抑止する。
これにはkeybd_eventというWin32APIを利用する。
Call keybd_event(CByte(VbKeyShift), 0, 0, 0)
Call objAccess.OpenCurrentDatabase("hoge.mdb")
Call keybd_evnet(Cbyte(VbKeyShift), 0, 2, 0)
これで、Shiftキーが押下された状態でのMDBオープンがエミュレートできるため、自動実行の抑止が可能である。
#Win32APIの宣言を別途すること。