ACCESSのVBAを実行するとACCESSが強制終了する事がある
ACCESSのVBAを実行すると、ACCESSが強制終了する事がある
ACCESSのVBAを実行すると強制終了 DoCmd.OpenQuery を疑え
ACCESSのVBAを実行するといくつかACCESS自体が突然強制終了する事がある。
基本的にエラーがあれば、デバッグするか、終了するかを確認するダイアログが表示される筈だが、中にはエラーも表示されず、ACCESS自体が突然強制終了する事があるケースについて確認個所を紹介。
ACCESSが強制終了する事があるVBAのマクロの組み方は、Win APIを利用する時など起こりやすいけれど、中には、複雑なVBAのコードを組んでいないにも関わらずエラーも出ず、音も無く強制終了するパターンがある。
まずは、その個所は大抵の場合 DoCmd.OpenQuery で、ACCESSに作成しているクエリーを実行する時である場合がある為、そこにブレークポイントを張って、強制終了している箇所がそこであるか確認を行う。
強制終了している箇所が、 DoCmd.OpenQuery だった場合は、クエリーの中身を確認する。
ACCESSのクエリーも、EXCELみたいな関数が使えるのだが、特にInStrRev関数とMID関数を使っている場合に起きやすい。
もしも、InStrRev関数の検索文字に記号のような物を利用している場合には(㈱、№ 等の環境依存文字)、これを違うものに変更してみて実行してみよう
もう一つは、InStrRev関数とMID関数の組み合わせで、InStrRev関数で検索した文字位置から、MID関数で指定した文字だけ取得するような計算ロジックを入れたりしている場合、InStrRevで検索対象にヒットしない、つまり成立しない偽のデータが存在していないか確認しよう。
その場合、クエリー側を修正するか、データ側を修正すると改善する場合がある。
こういった場合は、大抵の場合、クエリーの設計に問題があると考えるのが適切なので、そもそも成立せず、関数エラーになるような組み方を改善させると、ACCESSの強制終了が無くなる場合がある。