【対処方法】Microsoft AccessがOLEサーバーまたはActiveXコントロールと通信しているときにエラーが発生しました

スポンサーリンク
アイキャッチ 猫Access
スポンサーリンク

正常に動いていたAccessファイルが、突然 「Microsoft AccessがOLEサーバーまたはActiveXコントロールと通信しているときにエラーが発生しました」 とエラーメッセージが出て使えなくなってしまった場合の対処方法を紹介します。

Microsoft AccessがOLEサーバーまたはActiveXコントロールと通信しているときにエラーが発生しました

スポンサーリンク

エラーの原因は?どんな状況で発生する?

エラー原因

調べてみると、対象のAccessファイルのフォーム等に何かしらの不具合があることが原因のようでした。
ただ、「これが原因!」というのは判別しづらいようですね。

どんな状況で発生するか

色々なパターンがあるようですが、
主にAccessファイルを作成したパソコンと異なるパソコンで使用すると起きるようです。

参考として、私は以下の状況でエラーが発生しました。

  • 社内のパソコンリプレース
  • パソコン交換後、Accessのフォーム画面でボタンを押した際にエラーメッセージが出た
  • 新旧パソコンの環境
    旧パソコン:Windows7 32bit、Microsft Access 2013
    新パソコン:Windows10 64bit、Microsft Access 2019 64bit
  • 全てのAccessファイルでエラーが出たのではなく、多数ある中の一つだけ
  • Microsft Access 2019 32bitでも試してみたので、Officeのbit数の問題ではなさそう

これは私の想像になりますが、新パソコンのチェック機能の強化により、旧パソコンではチェックされていなかった不具合が表に出てきてしまったのかもしれません。
新しいパソコンだと性能はもちろんセキュリティなども強化され、昔できていたことができなくなることはよくあることだからです。

スポンサーリンク

対処方法・注意事項

対処方法

対処方法は「新しいAccessファイルを作り、元のAccessファイルから全ての情報をインポートする」です。
(説明する際の画像はMicrosoft Office 2010のものですが、手順自体はMicrosoft Office 2019でも同じです)

詳細な手順は以下になります。

(前準備)拡張子がmdbの場合は、accdb変換
必須ではありませんが、mdbはいつか使えなくなる危険性があるのでこのタイミングで変換しておいた方が無難です。
例)CSVインポート.mdb→CSVインポート.accdb
変換した場合はショートカットはもちろん、Accessファイルが他のAccessファイルからリンクテーブルとして参照されている場合、リンク先が変わってしまうためご注意ください。

accdb変換

mdb→accdb

1.対象のAccessファイルが入っているフォルダと異なるフォルダで右クリックし、 新規作成からMicrosoft Access データベースをクリック

新規作成

新規作成

2.新規作成されたAccessファイルを、対象のAccessファイルと同じ名前とする

例)「新規 Microsoft Access データベース.accdb」を作成し、「CSVインポート.accdb」にリネーム

新規作成

3.2で作成したAccessファイルを開き、外部データタブからAccessデータベースのインポートを選択

Accessインポート
Accessインポート

4.対象のAccessファイルをクリックして、OKを押すと「オブジェクトのインポート」画面が出るので、オプションをクリック

Accessインポート

5.オプションで出てきたチェック項目を全てチェックする

6.全てのタブ(テーブル・クエリ・フォーム・レポート・マクロ・モジュール)ですべて選択をクリックし、OKをクリック

Accessインポート

7.Accessファイルを閉じて、元々のAccessファイルのフォルダに移し替える。

※元々のAccessファイルは念のため名前を変えてバックアップとして残しておいてください。

これでAccessファイルの作り直しは完了です。

インポート中に何かしらエラーで取り込めないものがありますが、
恐らく何かしら問題のあるオブジェクトがほとんどですので、
基本不要なものなので気にしなくてもいいかと思います。

ただ、 念のためそのオブジェクトが使われていないかはインポート後に確認して、
必要であれば個別に対象のAccessファイルからコピペしてきてください。

注意事項

上記方法では、VBAのプロジェクト名は引き継がれないので注意してください。
例えば、DAOを使ってテーブル操作をする場合は、Databeseオブジェクトの変数を宣言していたりしますが、その場合、被らないようにプロジェクト名をあえて固有の名前に変えていたりします。

その場合、インポート後に手で直してください。

Accessインポート

Accessインポート

本ブログで一押しのオンラインスクールのご紹介♪




本ブログで一押しのオンラインスクール「Udemy」
筆者も利用しているスクールで、日頃の隙間時間に好きな講座が学べるので大活躍です♪

ジャンルが豊富で学びたい講座がきっとみつかる

AI・データサイエンスなど最先端のIT技術からプレゼンなどビジネススキルに関する講座まで15.5万以上(※海外講座含む)あるため、自分が学びたい講座をみつけることができます

お手頃な価格帯

1講座あたり数千~数万円程度で実践的なスキルアップが可能です。
講座は一度購入すれば視聴期限なく受講でき、30日返金保証もついているので安心して始めることができます。

学びやすい多彩な機能

0.5~2倍の変速機能で自分のペースで受講が可能、専用アプリを使えばスマホからオフライン環境でも視聴が可能です!
また、講師に直接掲示板から質問ができるので疑問を解決し自学自習をサポートしてくれます。

購入前に視聴できますので、是非興味のある方は↓をクリックしてみてください。




AccessOfficeVBA
スポンサーリンク
nyanblog
タイトルとURLをコピーしました