マクロの守り中小企業のAI導入支援|Excelマクロ(VBA)の属人化の解消からExcelマクロ(VBA)の引き継ぎ 専門

コラムよくある困りごと

引き継いだVBAのマクロが「参照設定が見つかりません」で止まるのはなぜ?解析ツールで見つけ、直す順番を試した

引き継いだVBAのマクロを別のPCで開いて「参照設定が見つかりません」で止まるときは、VBEの[ツール]→[参照設定]を開き、頭に「参照不可」と付いた行を探します。見本にした架空のブック10本では7本に切れうる参照があり、手元のPC(Excel 16.0、64bit)で実際に止まったのは2本で、止めたのはどちらもOCX(昔のコントロール部品)の参照でした。型の宣言をCreateObjectに直しても、切れた参照が残るとエラーは消えませんでした。(2026年10月時点)

読み解きから直す・置き換えるまでの流れと費用はExcelマクロの引き継ぎのページにまとめています。

要点

  • 「参照設定が見つかりません」で止まったら、VBEの[ツール]→[参照設定]で、頭に「参照不可」と付いた行を探します。
  • 架空のブック10本のうち7本(参照11件)に、切れうる参照がありました。手元のPCで止まったのは2本です。
  • 止めたのは、Common DialogとCommon Controls-2のOCXの参照2件だけで、5回とも同じエラー文でした。
  • ScriptingとADODBは、参照を外すと5回とも止まり、CreateObjectに直すと0回になりました。切れた参照が残ると、直しても5回とも止まります。
目次
  1. 「参照設定が見つかりません」と出たら、最初にどこを見ますか?
  2. 引き継いだマクロ10本のうち、切れうる参照を持つのは何本ですか?
  3. どの参照が切れて、どんなエラー文が出ましたか?
  4. 遅延バインディングに直せば、参照切れは起きませんか?
  5. PCやExcelの版を替えるとき、どの順で確かめますか?
  6. このサイトで相談するには?
  7. よくある質問

「参照設定が見つかりません」と出たら、最初にどこを見ますか?

VBEの[ツール]→[参照設定]を開き、頭に「参照不可」と付いた行を探します。Microsoftの説明では、見つからない参照にはこの画面でMISSINGが付きます。これが残る間は、コードを動かせません。

マクロを動かしたときの文面は、このPCでは「コンパイル エラー: プロジェクトまたはライブラリが見つかりません。」でした。原因はコードの中ではなく、コードの外にある参照設定です。

直し方はMicrosoftが3つ書いています。見つからないファイルをもとの場所に戻します。別の場所にあるなら、新しく参照を足して古い行を外します。

使っていないなら、行のチェックを外します。外す前に、そのライブラリを使う行がないかを確かめます。

参照設定はコードの外にあるので、文字を探すだけでは見つかりません。引き継ぎ書ではVBAの引き継ぎ書のひな形の9「動く条件」に、参照の一覧を書き足します。

引き継いだマクロ10本のうち、切れうる参照を持つのは何本ですか?

架空の10本では、7本に切れうる参照がありました。参照は合わせて11件で、種類はOCX・Scripting・ADODB・Outlook・Excelの旧版の5つです。残る3本は、標準の参照だけでした。

数え方はマクロの棚卸しの続きです。棚卸しで拾ったブックから解析ツール(olevba)でVBAを取り出し、ブックの中の参照の一覧を読みます。参照は「古いPCで作った」想定で、Office 14の場所やOCXの名前を書いた見本です。

架空のブック10本の参照設定の表。7本がOCX・Scripting・ADODB・Outlook・Excel14のいずれかを持ち、手元のPCで止まったのは見積書作成と月次報告の2本。止めたのは2本ともOCXの参照架空のブック10本の参照設定を、解析ツール(olevba)で数えた結果ActiveXScriptingADODBOutlookExcel 14この PC で受注集計————動いた見積書作成———止まった顧客DB連携————動いたメール送信————動いた在庫表—————参照なし請求書発行———動いた日報集計—————参照なし出荷指示————動いた共通関数(.xlam)—————参照なし月次報告——止まった参照を持つのは10本中7本(参照11件)。この PC で止まったのは2本で、止めた参照は OCX の2件だけ。赤い丸が止まった参照。ほかの9件は、古い版を指していても Excel が新しい版に読み替えるか、そのまま見つかった。各ブックは架空(マクロの守りが作成)。1ブック1回の実行。Outlook は宣言だけで、送信や起動はしていない。
図1 10本の参照設定と、手元のPCでの結果。マクロの守りの計測(2026年10月17日)。ブックは架空で、1本1回ずつ開きました。

7本のうち、手元のPCで実際に止まったのは2本でした。ほかの5本は、古い版を指していても動きました。

限界もあります。見本はExcelで保存したブックではなく、仕様書(MS-OVBA)の形式でスクリプトが書いたものです。7本という数も、見本に仕込んだ数です。実際の社内のブックの割合ではありません。

どの参照が切れて、どんなエラー文が出ましたか?

切れたのはOCXの参照だけで、「コンパイル エラー: プロジェクトまたはライブラリが見つかりません。」が5回とも出ました。Common Dialog 6.0とCommon Controls-2 6.0のどちらも同じです。この2つは、手元のPCにライブラリの登録がありませんでした。

Microsoftは、64bit版のOfficeは32bitのバイナリを読み込めないと説明しています。対象には、MSComCtlのTreeViewなどと、MSComCt2のDateTimePickerなどが入ります。Office 2010より前の32bit版が入れた部品です。PCを64bitに替えると、この種類から切れます。

ほかの4種類は、5回とも動きました。Outlook 14.0とExcel 14.0を指す参照は、手元のPCでは新しい版として読めました。ほかのPCで同じになるかは、確かめていません。

参照設定の種類ごとの対応図。OCXは5回とも止まり、ScriptingとADODBは切れず、参照を外すと5回とも「ユーザ定義型は定義されていません。」。Outlook14.0とExcel14.0は新しい版に読み替わって動いた参照設定の種類ごとの、使われるクラスと切れたときの症状参照設定(古い PC の想定)コードに出るクラスこの PC で開く(各5回)参照を外す(各5回)Common Dialog 6.0 などOCX の部品CommonDialog、DTPickerMISSING。「プロジェクトまたはライブラリが見つかりません。」5/5MISSING の行を外して直すScripting Runtimescrrun.dllFileSystemObject切れず。5回とも動いた「ユーザ定義型は定義されていません。」5/5ActiveX Data Objects 2.8msado28.tlbConnection、Recordset切れず。5回とも動いた「ユーザ定義型は定義されていません。」5/5Outlook 14.0 Object LibraryOffice14 の場所Outlook.Application切れず。新しい版に読み替わった試していないExcel 14.0 Object LibraryOffice14 の場所Worksheet、Range切れず。新しい版に読み替わった試していない(外せない)この PC:Windows 11、Microsoft 365 Apps 16.0(ビルド20430)64bit。参照は MS-OVBA の形式で書いた架空のブックに入れた。Excel の設定は変えていない。マクロの守りの実験(2026年10月17日、scripts/figs/vba_reference_missing.py)。「参照を外す」は Access で試した。
図2 参照設定・使われるクラス・症状の対応。各5回の結果です。「参照を外す」はAccessで試しました。

新しいOutlookに替えたときの止まり方は、参照とは別の話です。新しいOutlookでマクロが動かない理由に、エラー429などの文面をまとめました。

遅延バインディングに直せば、参照切れは起きませんか?

外れた参照については、起きなくなります。ただし「参照不可」の行が残っていると、直した後も止まります。ScriptingとADODBでは、同じ処理を5回ずつ動かして確かめました。

参照を外すと「ユーザ定義型は定義されていません。」が5回とも出ました。これをCreateObjectの書き方に直すと、エラーは0回になりました。直す前後は次のとおりです。

' before: 型で宣言(参照設定に Microsoft Scripting Runtime が要る)
Dim fso As Scripting.FileSystemObject
Set fso = New Scripting.FileSystemObject
' after: 遅延バインディング(参照設定は要らない)
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")

一方、OCXの参照が「参照不可」のまま残るブックでは、CreateObjectに直したマクロも5回とも止まりました。直すのは、コードと参照の両方です。

直す前後のエラー回数。参照を外して型で宣言のままだとScriptingもADODBも5回中5回エラー、CreateObjectに直すと0回。参照不可のOCXを残したままCreateObjectに直しても5回中5回エラー直し方の前後。同じ処理を5回ずつ動かして、エラーになった回数ScriptingADODB参照がある。型で宣言(元のマクロ)0/50/5参照を外す。型で宣言のまま(before)5/55/5参照を外す。CreateObject に直す(after)0/50/5MISSING の参照(OCX)を残したまま、CreateObject に直した外さないと、直した後もエラーが出る5/5赤い四角がエラーになった回。灰色は動いた回。Scripting と ADODB は Access(Office 共通の VBA)に本物の参照を入れてから外した。最下段は Excel で、OCX の参照が MISSING のブックを使った。毎回新しい Excel・Access を起動。マクロの守りの実験(2026年10月17日)。
図3 CreateObjectに直す前後のエラー回数。ScriptingとADODBはAccessで、最下段はExcelで試しました。

遅延バインディングには、失うものもあります。MicrosoftのProject向けの説明は、ProgIDで作るオブジェクトは編集中にメンバーが見えず、性能も劣ると書いています。できれば参照を足して型で宣言するよう勧めています。直す範囲は、引き継ぐ先のPCで揃わないライブラリに絞ります。

PCやExcelの版を替えるとき、どの順で確かめますか?

先に、ブックごとの参照の一覧を解析ツールで数えて、棚卸しの表に足します。その後、切れうる種類から順に、次のように確かめます。

  1. OCXの参照:PCを64bitのOfficeに替えるなら、先に代わりの部品を決める。Microsoftの説明では、これらは32bit版のOfficeが入れたものです。
  2. Outlookの参照:従来のOutlookが前提のマクロは、新しいOutlookに替えると止まる。参照を直しても解決しない。
  3. Excelの旧版を指す参照:PCの更新で版が上がるときは、Excel 2021の提供終了の前後に、新しい版で一度開いて確かめる。
  4. 64bit化:Declare文のPtrSafeは参照とは別の原因です。同じPCでの結果は、シート名や列を変える実験に書きました。

確かめた結果は、引き継ぎ書に「どのPCで、どの参照が切れたか」として残します。次の人が、同じ画面を開かずに済みます。作った人がいないマクロ全体の読み方は、Excelマクロの引き継ぎにまとめています。どの手続きがどの部品を呼ぶかは呼び出しの図で洗い出し、直すか置き換えるかの比べ方は移行先の比較に、金額は導入例(イメージ)にあります。

このサイトで相談するには?

どのブックのどの参照を残し、どれを直すかは、PCの台数や使うブックで変わります。何をどう頼むか決まっていなくても大丈夫で、準備は要りません。マクロの守りが、御社のやり方に合わせて、進め方を一緒に考えます。無料で相談する

よくある質問

「参照不可」の行のチェックを外すだけで直りますか?
そのライブラリを使う行がマクロになければ直ります。使う行が残っていると、外した後に「ユーザ定義型は定義されていません。」が出ます。
遅延バインディングに直せば、参照切れは起きなくなりますか?
外れた参照については、5回とも動きました。ただし「参照不可」の行が残っていると、直した後も5回とも止まりました。
Excelを新しい版に替えると、参照設定は必ず切れますか?
いいえ。Office 14.0を指す参照は、この手元のPCでは5回とも動きました。切れたのはOCXの参照だけでした。
「参照不可」がどこにも見当たらないのに止まるのはなぜですか?
参照の一覧にはなくても、PtrSafeのないDeclare文など別の原因で止まります。VBEの[デバッグ]→[コンパイル]で、止まる行を確かめます。

この記事の実験・計算の条件

架空のマクロ付きブック10本と、参照1種類ずつのブックを各5回。Windows 11、Microsoft 365 Apps 16.0(ビルド20430、64bit)。2026年10月17日、筆者のPC。

出典

  1. Microsoft Learn「Can't find project or library」(2019年8月14日、2024年2月1日更新)(2026年10月17日確認)
  2. Microsoft Learn「Database contains a missing or broken reference」(2025年5月26日)(2026年10月17日確認)
  3. Microsoft Learn「Compatibility between the 32-bit and 64-bit versions of Office」(2021年10月27日、2024年12月18日更新)(2026年10月17日確認)
  4. Microsoft Learn「OLE programmatic identifiers, late binding, and early binding (Project)」(2019年6月8日、2024年1月24日更新)(2026年10月17日確認)
  5. マクロの守りの計測(2026年10月17日、Windows 11・Microsoft 365 Apps 16.0 ビルド20430 64bit・oletools 0.60.2。架空のブック10本)。scripts/figs/vba_reference_missing.py(2026年10月17日確認)