Accessフォームで、社内でも他の人に使ってもらうために、ランタイムで実行するようなフォームはよくあると思います。あるファイルだけがエラーが出て起動しないという事態がありました。
「実行時エラーが発生したため、このアプリケーションの実行は中断しました。アプリケーションを続行できません。システムはシャットダウンされます。」
いろいろ調べた結果、原因はエラーが出たファイルに以下のような問題があることがわかりました。
実行時エラーが発生したため、このアプリケーションの実行は中断しました。
ダブルクリックでフォーム起動した直後に当エラーが出る場合の原因と対処
起動と同時に開くフォームのVBAコードに原因があった。
フォームのプロパティのイベントに起動時のプロシージャーやマクロで何か処理している場合は無効にして解消されるか確認してみましょう。
私の場合は、下記のナビゲーションウィンドウを初期フォームに起動同時にコード実行していた事が原因でした。
VBAでリボンやナビゲーションウィンドウの表示と非表示をしている
リボンやナビゲーションウィンドウを表示するコードはランタイムでは実行するとエラーがでて当エラーがでてしまう。ランタイム配布する場合は、使用しないほうがいいでしょう。
ちなみにリボンとナビゲーションウィンドウ操作は以下のようなコードです。
Private Sub リボン表示ボタン_Click()
'リボン表示
DoCmd.ShowToolbar "Ribbon", acToolbarYes
'ナビゲーションウィンドウを表示する
DoCmd.SelectObject acForm, "", True
End SubPrivate Sub リボン非表示ボタンClick()
'リボン非表示
DoCmd.ShowToolbar "Ribbon", acToolbarNo
'ナビゲーションウィンドウを非表示にする
DoCmd.SelectObject acForm, "", True
DoCmd.RunCommand acCmdWindowHide
End Sub
'リボン表示
DoCmd.ShowToolbar "Ribbon", acToolbarYes
'ナビゲーションウィンドウを表示する
DoCmd.SelectObject acForm, "", True
End SubPrivate Sub リボン非表示ボタンClick()
'リボン非表示
DoCmd.ShowToolbar "Ribbon", acToolbarNo
'ナビゲーションウィンドウを非表示にする
DoCmd.SelectObject acForm, "", True
DoCmd.RunCommand acCmdWindowHide
End Sub
クエリを実行するとエラー。警告を非表示にしてたから?
①警告非表示→②テーブル作成クエリ→③警告表示戻す→4クエリを開く
DoCmd.SetWarnings False '①警告メッセージを非表示設定
DoCmd.OpenQuery "クエリ1" '②テーブル作成クエリを実行
DoCmd.SetWarnings True '③警告メッセージを表示設定に戻す
DoCmd.OpenQuery "クエリ2" '④別のクエリ
DoCmd.OpenQuery "クエリ1" '②テーブル作成クエリを実行
DoCmd.SetWarnings True '③警告メッセージを表示設定に戻す
DoCmd.OpenQuery "クエリ2" '④別のクエリ
こんなVBAコードを組んで、フォームのボタンを設定していましたが、ランタイム環境の場合は当エラーが最初の方は表示しました。
一度①③のコードをコメントアウトし、ランタイム上で実行すると普通に起動。別原因かな?と思い、一度元に戻すと以降問題なく起動するようになりました。こちらについてはなぜ解決したのかわかりませんでした。
一度①③のコードをコメントアウトし、ランタイム上で実行すると普通に起動。別原因かな?と思い、一度元に戻すと以降問題なく起動するようになりました。こちらについてはなぜ解決したのかわかりませんでした。
VBA参照設定が原因になることも?
今回の問題でいろいろググりまくってましたが、知恵袋などの他人のブログ記事をみていると、結構「参照設定」(VBA)が怪しいようなケースもあったりするみたいです。Accessのバージョンとランタイムのバージョンの相性とかも多少あったりもするようです。
Access本体(ランタイムではない)でランタイム環境を動作テストする方法はあるよ
こちらの記事もご参考ください。
コメント