OLEサーバーまたはActiveXコントロールとの通信エラー
お客さまが長年使っていたパソコンを、新しいものに交換したところ、
Accessでエラーが起きるようになりました。
そのときの解決方法をご紹介します。
よくわからないエラーの場合は・・・
エラーの内容
フォーム上のある特定のボタンを押すと、
「イベントプロパティに指定した式 クリック時 でエラーが発生しました:
Microsoft AccessがOLEサーバーまたはActiveXコントロールと
通信しているときにエラーが発生しました。」
というエラーが、必ず出るようになってしまいました。
古いパソコンではエラーにはならかったのに、
新しいパソコンだけ、このエラーになります。
エラーメッセージの内容は、一見、意味不明なメッセージです。
このような、メッセージの場合は、たいてい、
Access本体の不具合であることが多いです。
このようなエラーの場合、決まった解決方法というものがありません。
また、複数のフォームがAccessの中で、なぜかこのボタン1つだけ、
エラーが出るので、その理由もよくわかりません。
今回は、運良く、解決方法が見つかったので、
その方法をご紹介します。
パソコン環境
パソコン交換前 | パソコン交換後 | |
OS | Windows7 | Windows10 |
Access | Access2010 | Access2019 |
解決方法:フォームをコピーして解決
結論から先に言うと、フォームをコピーすることで解決しました。
実際に行った操作を、順に説明します。
1.フォームをコピーする
試しに、Access画面左側の「ナビゲーションウィンドウ」で、
エラーが発生しているフォームを、コピーしたところ、
コピー先のフォームでは、エラーが出ないことがわかりました。
今回は、これだけで直せるようですが、
もし、これだけで直らない場合は、
・ボタンクリック時のイベント処理をいちど消して、作り直す
・新規のAccessファイルを作成し、そちらにテーブルやフォームなど
全てのAccessオブジェクトをインポートする
などの方法も、試してみると良いでしょう。
2.コピー先のフォームを使えるようにする
コピー後のフォームを、今後使えるようにするため、
・エラーが出ていた(コピー元の)フォームを削除
・エラーが出ない(コピー先の)フォームの、フォーム名を、
コピー元のフォーム名にリネーム
という手順も行いました。
これで、エラーが出ないAccessファイルができあがり、
問題は解決しました。
原因も、よくわかりません・・・
考えられる原因
おそらく、エラーが発生したフォームは、
長年使われている間に、
小さなエラーが蓄積されていたものと思われます。
Windows、または、Access本体のバージョンが新しくなると、
以前からAccessファイルの内部に蓄積されていたエラーが、
表面化し、
これまで出なかったエラーメッセージが出ることがあるようです。
今回の場合は、
フォームをコピーしたタイミングで、
きれいなフォームに生まれ変わり、
蓄積されていたエラーが消えたものと思われます。
まとめ
今回は、運良く、簡単にエラーを解決することができました。
しかし、場合によっては、
他の方法でないと解決できないかもしれません。
同じようなエラーでお困りの方がいらっしゃいましたら、
お使いのAccessを調査しますので、
ぜひご相談ください。
大手SIerに長年常駐し大規模システムの経験を重ねプログラムスキルとDB設計を磨く。AccessおよびExcelのVBAを得意とする。
⇒お仕事のご依頼はこちら