AccScan
延命・注意

ActiveX既定無効化でAccessが動かない?影響するコントロールと回避策

ActiveX既定無効化の対象はWord・Excel等でAccessは対象外。TreeViewやカレンダーが動かない主因は古い部品と環境の変化です。mscomctlの64bit対応やビット数確認から回避策までを解説します。

まずは、自社のAccessが「解析できるか」を無料で確認できます。

約2分・ファイル送信不要・発注義務なし

結論:ActiveXの既定無効化に、Accessは含まれていません

2025年4月から、Microsoft 365版のOfficeでActiveXコントロールの既定無効化が始まりました。ただし対象は公式サポートページに列挙されたWord・Excel・PowerPoint・Visioの4アプリ(Office 2024も同様)で、2025年時点でAccessはこの一覧に入っていません。「あの無効化のせいでうちのAccessが壊れたのでは」という心配は、まずしなくて大丈夫です。

とはいえ、AccessのフォームでTreeViewが表示されない、カレンダーコントロールが消えた、という故障自体は現実に起きます。犯人は既定無効化ではなく、たいてい別のところにいます。具体的には、Officeのビット数が変わったこと、古い部品を参照していること、部品そのものが廃止されたことです。当社への相談でも、発端はほぼ例外なくPCの入れ替えかOfficeの更新でした。切り分けを始める前に、まず今のファイルをコピーで確保してください。当社への相談でも、原因調査のつもりでデザインビューを開き、そのまま保存して状態を悪化させてしまった例がありました。

症状の確認

次のどれかに当てはまるなら、この記事で扱う原因の可能性があります。

  • フォームやレポートで、TreeViewやListViewがあった場所が白い枠になる、または何も出ない
  • ファイルを開くと「ActiveXコントロールを読み込むときにエラーが発生しました」と表示される
  • VBAの実行時に、エラー429「ActiveXコンポーネントはオブジェクトを作成できません」で止まる
  • VBE(Alt+F11で開くVBAの編集画面)の「ツール」→「参照設定」に「参照不可」の項目がある

共通点は、Accessファイル自体には何も手を入れていないのに、PCやOfficeが変わった途端に発症すること。昨日まで動いていたなら、ファイルの破損より先に環境側を疑ってください。開くこと自体に失敗する場合は破損の可能性もあるので、その場合は破損時の修復手順をご覧ください。

対処手順:ビット数の確認から部品の特定まで

  1. ファイルをコピーする。以降の確認作業はコピー側で行います。
  2. Officeのビット数を確認する。Accessの「ファイル」→「アカウント」→「Accessのバージョン情報」で、バージョン番号の後ろに32ビットか64ビットかが表示されます。Office 2019とMicrosoft 365以降は64bit版が既定になったため、PCを入れ替えたら知らないうちに32bitから64bitへ替わっていた、というのが定番のパターンです。
  3. 使っている部品を特定する。VBEの「ツール」→「参照設定」で「参照不可」の項目を控え、フォームのデザインビューで問題のコントロールの種類を確認します。TreeView・ListView・ProgressBarなどはmscomctl.ocx(Visual Basic 6.0世代の共通コントロール)、カレンダーコントロールならMscal.ocxです。
  4. 原因に応じた回避策を選ぶ。組み合わせは次の表に整理しました。

原因の整理:疑うべきは古い部品と環境の変化

原因起きること回避策
古い32bit版の部品を64bit版Officeで参照手動配置した旧mscomctl.ocxやサードパーティ製の32bit部品が読み込めないまずMicrosoft 365を最新に更新(mscomctl.ocxは64bit対応済み)。対応版が無い部品は標準機能へ置き換え
部品そのものの廃止カレンダーコントロール(Mscal.ocx)はOffice 2013以降提供なし標準の日付選択カレンダーに置き換え
部品の未登録・破損エラー429で対象のオブジェクトを作成できないOfficeの修復、部品の再インストール

64bit移行がからむケースは、少し丁寧な切り分けが要ります。よく誤解されるのですが、TreeViewやListViewが含まれるmscomctl.ocxは、Microsoft 365のバージョン1707(2017年7月)で64bit対応が追加されました。Microsoft 365版のOfficeを最新に保っていれば、これらの共通コントロールは64bit環境でも作成・編集・実行できます。ですから、まず試すべきはOfficeの更新です。それでも動かないときに疑うのは、古い32bit版のmscomctl.ocxを手動でsystem32などに配置して参照している、あるいはサードパーティ製の32bit専用ActiveX部品を使っている、といった環境要因です。Microsoftの互換性情報にあるとおり、Visual Basic 6.0世代の32bitコントロール一般は64bitプロセスに読み込めませんが、mscomctl.ocxはMicrosoftが64bit版を用意した例外にあたります。なお、サードパーティ製など64bit版が存在しない部品を使っている場合は、32bit版Officeを選ぶ選択肢が公式に案内されています。

カレンダーコントロールは事情が違います。同じ互換性情報にあるとおり、Mscal.ocxはOffice 2013の時点で提供されなくなりました。新しいPCには部品の実体がそもそも無いので、32bit版を入れ直しても復活しません。Microsoftは別の日付選択コントロールへの置き換えを案内していますが、Accessの場合、日付型フィールドに連結したテキストボックスで標準の日付選択カレンダーが使えます。当社が置き換えを請け負うときも、大半はこれで足りています。

エラー429は、公式のエラーリファレンスによると、クラスがレジストリに登録されていない、必要なDLLが見つからない・壊れている、といったときに出ます。ビット数が合っている環境なら、Officeの修復や部品の再インストールで直る余地があります。ただし64bit版Officeに32bit専用の部品という組み合わせでは、登録をやり直しても動きません。先にビット数を確認したのはこのためです。

なお、コントロールは無事なのにVBAがコンパイルエラーで止まる場合は、Declare文(Windows APIを呼び出す宣言)を疑ってください。64bit版のVBAでは、Windows APIを呼び出すDeclare文にPtrSafeキーワードが必要です。加えて、ポインターやハンドルを受け渡す引数はLongPtr型に、64bit整数はLongLong型に直します(通常の32bit整数までLongPtrにすると宣言が壊れることがあるので、変えるのはポインター・ハンドルだけです)。対象になるのは主にこうしたAPI宣言まわりで、大半のVBAコードは変更なく動きます。

予防:部品の棚卸しと、次の廃止への備え

今回をしのいでも、古い部品への依存が残っている限り、次のPC入れ替えで同じことが起きます。延命する方針なら、参照設定とフォーム上のActiveXコントロールの一覧を先に作っておいてください。何をどこで使っているかさえ分かっていれば、更新のたびに慌てずに済みます。点検項目の全体像はAccess延命チェックリスト10項目にまとめました。

次に控えているのはVBScriptの段階的廃止です。Microsoftの開発者向けブログによると、2026〜2027年ごろにWindowsのVBScriptが既定で無効化され、将来的には削除される計画です。VBA自体は廃止されません。正規表現に使われてきたVBScript.RegExpも、Microsoft 365版ではバージョン2508以降、VBA標準のRegExpクラスで置き換えられます。.vbsファイルの呼び出しやVBScript.RegExpへの参照があるAccessは、いまのうちに洗い出しを。

正直に言えば、32bit版の入れ直しは時間稼ぎです。当社もまず入れ直しで業務を復旧させることがありますが、そこで終わらせず、いつまでに置き換えるかを決めておかないと、数年後に同じ騒ぎをもう一度やることになります。

作った人が退職済みで、どこでActiveXを使っているか誰にも分からない場合は、属人化したAccessの進め方を先にどうぞ。ファイルがaccde形式で中身を確認できない場合や、これを機に作り直しを検討する場合は、無料の解析可否チェックで解析できる状態かどうかだけでも確かめられます。

よくある質問

Q. AccessにもActiveXの既定無効化はいずれ適用されますか。

2025年時点で、公式ページの対象一覧にAccessは入っておらず、適用予定の発表も確認できていません。ただ、ActiveXやVBScriptを段階的に締め出す方向性ははっきりしているので、対象外だから安心とは考えず、依存部品を減らしておくのが安全です。

Q. WordやExcelの側でブロックされたActiveXは元に戻せますか。

ブロック時は既存のオブジェクトが静止画像として表示されるだけで、操作はできません。トラストセンターの設定(「ファイル」→「オプション」→「トラストセンター」)で、有効化前に確認を求める動作へ戻せますが、この変更は該当アプリで開くすべてのファイルに効きます。Microsoftはセキュリティ上の理由から推奨していないため、信頼できるファイルに限るか、ActiveXを使わない形への修正を検討してください。

Q. TreeViewを64bit版Accessで動かす方法はありませんか。

Microsoft 365版のOfficeなら、バージョン1707(2017年7月)でmscomctl.ocxが64bit対応済みです。Officeを最新に更新すれば、TreeViewやListViewは64bit環境でも動くのが基本です。動かない場合は、古い32bit版のmscomctl.ocxを手動配置して参照しているなどの環境要因が疑われます。一方、サードパーティ製の32bit専用部品など64bit版が存在しないコントロールは動かないため、そのときは32bit版Officeを使うか、標準のリストボックス・サブフォームでの作り直しが堅実です。

Q. 置き換えにかかる費用の目安は。

コントロール数個の置き換えなら小規模改修で収まることが多い一方、作成者不在やaccde化で解析から必要になると幅が出ます。費用の考え方はAccess移行の費用相場で解説しています。

触れないAccessが「診断できるか」だけ、確かめませんか。

顧客データは送信不要。発注の義務もありません。

約2分・ファイル送信不要・発注義務なし/説明はオンライン・売り込みはしません