VB側からACCESSが起動をさせるプログラムを作成していますが、
その際に、二重起動をチェックしようと考えています。
ネット等で検索した場合、DLookup等を使えば良いとありましたが、VB
では使えず。。。
何かうまくVBでACCESSの起動をチェックするような事はできないでしょうか
教えて下さい。
> ACCESSが起動をさせるプログラム
「Accessが起動をさせる」ではなく
「Accessを起動させる」の間違いでしょうか?
元の文だと、「Access 上から(何かを)起動させる」話に見えます。
> その際に、二重起動をチェックしようと考えています。
それって、MSACCESS.EXE 本体の二重起動の話ですか?
それとも、そこに開かせる mdb / accdb / adp 等の話ですか?
> 何かうまくVBでACCESSの起動をチェックするような事はできないでしょうか
・GetObject を使う。
・WMI の Win32_Process クラスで捜索。
・FindWindowEx API 等で対象ウィンドウを探す。
・Running Object Table から調べる。
教えて頂きありがとうございます。
ご指摘の通り、「ACCESS”を”起動させる」の間違いでした。。。
二重起動というのは、mdbの話です。
VB側からボタンが押された際に、同じmdbが起動していないか?のチェックを
しようとしています。
とした場合、教えて頂いた方法のどれを選択するのが最適でしょうか。。。
教えて頂けたら幸いです。
よろしくお願いします。
> VB側からボタンが押された際に、同じmdbが起動していないか?
であれば、その mdb を排他モードで開かせれば良いと思います。
そうすれば、後から開こうとした方は実行時エラーになるので、
そのエラーをトラップすることで判定できます。
http://qanda.rakuten.ne.jp/qa7253380.html
http://madia.world.coocan.jp/cgi-bin/vbnet/wwwlng.cgi?print+201201/12010010.txt
asami YURI SAHO
が同じところから投稿されてて、
yurix_1 って人の投稿したコードとコーディングルールが
同じだから聞くけど、
http://qanda.rakuten.ne.jp/qa7253380.html
> ※ Microsoft Access 9.0 Object Libraryを追加
ってことは Access VBA じゃなく、VB2008
のコードで、
> set accApp = CreateObject("Access.Application")
は VB6 時代のルールで、VB2008じゃ書いても
強制的に消されてしまうんだけど、
> ご指摘頂いたようにしたら問題なくできました!
ってどういうこと?
ついでに言えば、参照設定してるのに
CreateObject というのは理解してない人のコードだから。
Excel でプロセスが残る問題の質問のときにも指摘したけどもね!!!