VBAが突然コンパイルできない? ― 参照設定を一覧化してBROKENを見つける

VBA・Officeカテゴリを表すパンダのイラスト VBA・Office

この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。Microsoft LearnのVBA参照設定・Officeセキュリティ資料と既存Daily-Code-Samplesを再確認し、参照切れを安全に一覧化する手順として整理しています。

検証ステータス:📘 公式情報確認済み・Excel実機未確認

VBAが別PCで突然コンパイルできなくなったときは、参照設定の MISSING を疑う価値があります。ThisWorkbook.VBProject.References を列挙し、IsBroken を見ると、壊れた参照をコードから切り分けられます。

まず動かす

この操作はVBAプロジェクトオブジェクトモデルへのアクセスを使います。組織PCではポリシーを優先し、設定変更を勝手に行わないでください。

Option Explicit

Public Sub CheckReferences()
    Dim ref As Object
    Dim brokenCount As Long

    On Error GoTo AccessDenied

    Debug.Print "[START] 参照設定を確認します"

    For Each ref In ThisWorkbook.VBProject.References
        If ref.IsBroken Then
            brokenCount = brokenCount + 1
            Debug.Print "[BROKEN]", "壊れた参照"
        Else
            Debug.Print "[OK]", ref.Name, ref.Major & "." & ref.Minor
        End If
    Next ref

    Debug.Print "[RESULT] Broken=" & brokenCount
    Exit Sub

AccessDenied:
    Debug.Print "[FAILED]", Err.Number, Err.Description
End Sub

Officeのマクロ/VBAセキュリティ設定はMicrosoft Supportで確認できます。

ここを見る

イミディエイトウィンドウに [OK][BROKEN] を分けて表示します。Broken=0 なら壊れた参照は検出されていません。1件以上なら、参照設定画面と照合します。

flowchart TD
    A[Referencesを列挙] --> B{IsBroken?}
    B -- No --> C[Name / Versionを表示]
    B -- Yes --> D[BROKENとして記録]
    C --> E[次の参照]
    D --> E

壊れた参照でFullPathを安易に読まない

壊れたReferenceではプロパティ取得自体が失敗する場合があります。既存の完全版サンプルでは、IsBroken=True の参照で FullPath を読まず、GUID取得も別関数で安全側に試します。

ReferenceのプロパティはOffice VBAの公式リファレンスで確認できます。

1か所変えてみる

正常参照についてだけ ref.FullPath を追加表示します。

If Not ref.IsBroken Then
    Debug.Print ref.Name, ref.FullPath
End If

まず IsBroken 判定を残したまま表示項目を1つ増やすことで、壊れた参照に対して危険なプロパティアクセスを増やさずに観察できます。

参照切れが起きる理由

典型的には、別PCへ移したときのライブラリ差、Office/ActiveXコンポーネント差、ファイル参照先の欠落などがあります。参照が壊れると、本来無関係に見える標準関数付近でコンパイルエラーが出ることもあり、最初の切り分けとして一覧化が役立ちます。

仕事で使うなら

参照設定を自動で「修復」するところまで一気に進めない方が安全です。

  • まず読み取り・一覧化だけする

  • MISSINGを検出しても自動削除しない

  • 複数候補から勝手に1つ選ばない

  • GUIDやバージョンを記録して原因を確認する

  • Officeの信頼設定を無断で緩めない

監査と修復を分けると、誤った参照へ付け替える事故を減らせます。

GitHubサンプル

完全版は正常参照のパス、壊れた参照の安全なGUID取得、アクセス拒否時の表示まで含みます。

公式情報・一次情報

まとめ

VBAの参照トラブルは、まず ReferencesIsBroken を読み取って見える化すると切り分けやすくなります。自動修復より先に、どの参照が正常でどれが壊れているかを確認するのが安全です。

文書情報

記事タイトル
VBAが突然コンパイルできない? ― 参照設定を一覧化してBROKENを見つける
作成日
更新日
Source URL
https://papanda925.com/?p=15341

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました