Word for MacのマクロでSystem Error &H*000FFF(-2147418113)が出る原因と解決方法|参照設定・Normal.dotm・セーフモードで完全復旧

Word for Mac(v16.99)で、これまで普通に動いていたVBAマクロが突然動かなくなり「Microsoft Visual Basic System Error &H*000FFF (-2147418113)」が表示される──そんな厄介なトラブルに直面した方向けに、原因の考え方から実際に効いた復旧手順、再発防止策までを一気通貫でまとめました。検証できる順に並べ、現場での再現例・判断基準・注意点も具体的に記載しています。

目次

Word for Macで発生する「System Error &H*000FFF(-2147418113)」とは

本エラーは、VBA実行時にランタイムが“致命的な想定外の例外”として扱う状況で出ます。WindowsのCOM由来の表記に見えますが、Mac版Wordでも内部の型ライブラリやテンプレートの読み込み不整合、アドイン競合、ドキュメント状態の異常などが重なると同様のコードで落ちることがあります。つまり「どこかの基盤が壊れている」サインであり、症状が漠然としているぶん切り分けの順番が何より重要です。

症状の典型

  • 自作マクロ・簡単なサンプル(MsgBox "test" だけ)でも実行直後に同エラー。
  • VBE(Visual Basic Editor)でコード編集・保存はできるが、作成時点実行時点で落ちる。
  • 一部文書では動くが、別の文書では一律NG(文書依存)。
  • 「参照設定」で不自然な重複や「参照不可(MISSING)」が見える。
現象発生タイミング影響範囲
System Error &H*000FFF (-2147418113)マクロ実行・VBE起動直後・コンパイル時該当ドキュメント/環境全体(Normal含む)
VBEが不安定になる参照設定の変更後全プロジェクト
一部マクロのみ失敗起動直後やフォーム表示直後ロードタイミング依存のコード

原因の全体像(なぜ起きるのか)

実務で多いのは次の4系統です。どれも「内部で前提としていた部品の不一致」が引き金になります。

  1. 参照ライブラリの破綻・重複:Office更新で型ライブラリの識別子やパスが揺れ、同一名ライブラリが二重登録/欠落(MISSING)する。
  2. グローバルテンプレート(Normal.dotm)やアドインの不整合:読み込み順や壊れでVBA環境の初期化に失敗する。
  3. 保存場所・ファイル状態の問題:クラウド同期直後のロック/ネットワーク越しの遅延で、実行時に読み込みが間に合わない。
  4. タイミング依存の実行:文書/フォームが完全にロードされる前にマクロが動いて競合。

最短で試す解決チェックリスト(結論先出し)

まずは次の表を上から順に実施してください。すべてGUI操作で完結し、失敗時の巻き戻しも容易です。

手順内容目的/補足
1Wordをセーフモード(クリーン起動)で起動
Mac版は Word を終了後、Shift を押しながら Dock から起動
追加アドイン・テンプレートが原因か切り分ける
2ファイルをローカル(Mac本体)に保存してから実行ネットワーク/クラウド経由保存時のアクセス競合を回避
3VBA 参照ライブラリを確認・整理
VBE → ツール ▷ 参照設定 で重複・不要なチェックを外す → 保存 → 必要に応じて再チェック
重複参照(例: Microsoft Office 16.0 Object Library が2つある等)や「Normal」テンプレート参照の欠落がエラー原因になることがある
4新規文書でマクロをテスト既存文書の破損が原因かを判定
5マクロ実行を遅延させる
Application.OnTime When:=Now + TimeValue("00:00:10"), _
Name:="Project1.Module1.Macro1"
ドキュメント/ユーザーフォームのロード完了前に実行される競合を回避

実際の解決例(再現済み)

  • 参照設定で二重に登録されていた Microsoft Office 16.0 Object Library の一方をいったん無効化 → 直後に再有効化
  • この操作を契機に、VBAプロジェクトの「Normal」参照が自動で復活し、すべてのマクロが再び実行可能に。
  • 決定打を一点に確定はできないものの、参照ライブラリの一時解除 → 再設定で内部キャッシュがリセットされ、競合が解消されたと考えられる。

手順の詳細ガイド

Wordをセーフモード(クリーン起動)で立ち上げる

Wordを完全終了したのち、DockのWordアイコンをShiftキーを押しながらクリックします。これにより起動時に読み込まれるテンプレート/アドインが抑制され、原因の切り分けが容易になります。クリーン起動でエラーが止まるなら、アドインやテンプレート(Normal.dotm含む)に問題がある可能性が高いです。

あわせて、グローバルテンプレートの自動読み込み場所を点検します(下記フォルダを一時退避)。

  • ~/Library/Group Containers/UBF8T346G9.Office/User Content/Startup/Word/

このフォルダに置いた .dotm アドインは起動時に読み込まれます。拡張子を .dotm.disabled に変更するなどして無効化→起動検証→1つずつ戻す、の順で原因を特定します。

ファイルをローカルに保存してから実行する

OneDrive/SharePoint上のドキュメントは、同期やロックの状態により実行直後にI/O待ちが発生することがあります。「名前を付けて保存」→デスクトップ等のローカルに退避し、自動保存を一時OFFにしてから実行してください。ローカルでエラーが止まれば、保存先/同期との競合が疑わしいです。

VBA参照ライブラリを確認・整理する

  1. VBEを開く(⌥F11 または Alt+F11)。
  2. メニュー「ツール ▷ 参照設定」を開きます。
  3. 次を重点的に確認:
    • MISSING(参照不可)が付いたライブラリはチェックを外す
    • 同名の重複(例:Microsoft Office 16.0 Object Library が2つ)があれば一方を外す。
    • 使用していないライブラリ(外部アプリ操作、古いアドイン由来など)は外す。
  4. 一度保存→Wordを終了→再起動し、必要に応じて本当に必要なライブラリだけ再チェック。
  5. 最後に、VBEの「デバッグ ▷ VBAProject のコンパイル」を実行し、構文と参照の整合性を確認。

ポイントは、不要な参照を削ぎ落とし、内部キャッシュを更新させることです。とくにOffice更新直後は型ライブラリの識別子が揺れることがあり、重複・欠落・古いパスの残骸が最もトラブルを誘発します。

Immediateウィンドウで参照を一括点検(任意)

以下を実行すると、現在の参照一覧を出力できます(「VBAプロジェクト オブジェクトモデルへの信頼」を一時的にONにしてください)。

Sub DumpReferences()
    Dim r As Reference
    For Each r In ThisDocument.VBProject.References
        Debug.Print r.Name & " | " & r.Description
    Next r
End Sub

新規文書で最小マクロを実行して切り分ける

  1. 新規文書(空白)を作成。
  2. 標準モジュールを追加し、次の最小コードでテスト:
Sub Hello()
    MsgBox "Hello"
End Sub

これで通るなら、元文書(テンプレート含む)の破損/埋め込み参照が原因です。元文書からコードをエクスポート→新規文書にインポートして移設すると復旧するケースが多いです。

マクロの起動タイミングを遅らせる

文書やユーザーフォームのロード完了前に他オブジェクトへアクセスすると競合しがちです。Application.OnTimeで数秒遅延させるだけで安定することがあります。

Public Sub Kick()
    Application.OnTime When:=Now + TimeValue("00:00:05"), _
        Name:="Project1.Module1.SafeStart"
End Sub

Public Sub SafeStart()
DoEvents          ' UIメッセージ処理を先に通す
' ここに本来の処理を記述
End Sub 

ユーザーフォーム表示直後に重い処理を走らせる設計は避け、表示→DoEvents→遅延実行を基本にすると安定度が上がります。

Normal.dotm・設定ファイルの健全化

Normal.dotmの破損はMac版でも頻出です。疑わしい場合はリネームして自動再生成させます(Wordは次回起動時に新規作成します)。

  1. Wordを終了。
  2. 次のパスで Normal.dotmNormal_old.dotm などにリネーム:
    • ~/Library/Group Containers/UBF8T346G9.Office/User Content/Templates/Normal.dotm
  3. Wordを起動 → 新しいNormalが生成される → マクロ実行を確認。

併せて、前述の Startup/Word 配下のアドインも空にして起動し、段階的に戻すと原因を特定できます。

バージョン更新と再インストールの考え方

  • Office/macOSは最新に更新:VBA関連の修正が含まれることがあり、復旧の近道になる場合があります。
  • 再インストールは最後の手段:環境破損の根本が「参照」「テンプレート」「アドイン」なら、再インストールだけでは直りません。まずは前章の参照整理とNormal再生成を優先してください。

再発防止のベストプラクティス

対策具体策効果
参照の最小化実際に使うライブラリのみチェック。MISSINGは即解除。更新時の破綻リスクを低減
テンプレートの健全化Normal.dotmの定期バックアップ。大規模変更前にコピー。破損時の復旧が容易
実行タイミングの制御フォーム表示直後の重処理禁止。OnTimeやDoEventsを活用。ロード競合の回避
保存先の管理開発・検証はローカル保存。同期ONの本番運用は十分な待ち時間を。I/O競合を回避
バックアップVBAプロジェクトは定期エクスポート(.bas/.frm)。Git等で管理も有効。巻き戻し・比較が容易

チェックポイント(困ったらここを見直す)

  • クリーン起動(Shift起動)でエラーが止まるか。
  • ローカル保存の新規文書+最小マクロで再現するか。
  • 「参照設定」にMISSING・重複はないか。
  • Normal.dotmを再生成したか。Startup/Word は空か。
  • VBEの「コンパイル」を通っているか。
  • 起動直後の自動実行(AutoOpen/Document_Open)で重処理をしていないか。

よくある質問(FAQ)

Q. エラーは特定の文書だけで起きます。文書の破損でしょうか?

A. 可能性が高いです。該当文書からVBAモジュールをエクスポート→新規文書へインポートし、スタイル・フォーム・参照を必要最小限で再構成すると解消することが多いです。

Q. 参照設定のどれを外して良いか不安です。

A. まずはMISSING表示のものから外してください。外したら必ず保存→再起動→コンパイルで整合性を確認。必要なライブラリ(例:VBAMicrosoft Word 16.0 Object LibraryOffice 16.0 Object Library など)だけ残すのが基本です。

Q. マクロ開始を遅らせる以外の安定化はありますか?

A. フォームの Initialize では重い処理を行わず、Activate 以降で実行する、Application.ScreenUpdatingApplication.EnableEvents をシナリオに応じて制御する、などの工夫も有効です。

トラブル発生から復旧までのモデルケース

  1. 更新後に既存マクロが全滅。エラーダイアログは毎回 &H*000FFF (-2147418113)
  2. Shift起動で停止。アドイン/テンプレート系が疑わしい。
  3. ローカル保存に退避 → 最小マクロは成功。文書依存の要素あり。
  4. 「参照設定」で Office 16.0 Object Library重複。一方を外して保存→再起動→再チェック。
  5. Normal参照が復活し、元のマクロもすべて復旧。

安全に作業するための備忘

  • 参照設定を変更する前に、該当VBAプロジェクトをエクスポートしてバックアップ。
  • Normal.dotmをリネームする前に、同フォルダを丸ごとコピー
  • 社内配布テンプレートを運用している場合は、配布側の参照設定も見直す(配布物がMISSINGを含むと受け取り側で再現)。

まとめ

Word for Macの「System Error &H*000FFF (-2147418113)」は、漠然とした致命エラーに見えますが、実務では参照ライブラリの不整合テンプレート/アドインの影響が圧倒的多数を占めます。最短で復旧するには、①Shift起動でクリーンに立ち上げて挙動を確認、②ローカル保存でI/Oを排除、③「参照設定」を整理してコンパイル、④新規文書で最小再現、⑤必要なら実行タイミングを遅延──の順に切り分けの一本道を進むこと。とくに参照ライブラリの一時解除→再設定は内部キャッシュをリフレッシュし、Normal参照の復活を促してくれます。最後に、Normal.dotmの再生成や更新の徹底、不要参照の排除、定期バックアップという予防習慣を付けておけば、同種の事故は大幅に減らせます。


付録:作業フロー早見表

段階アクション成功の目安次の一手
切り分けShift起動エラーが止まるアドイン/Normalの精査
環境ローカル保存・自動保存OFF最小マクロは成功参照設定の整理
参照重複解除・MISSING解除・再チェックコンパイル成功Normal再生成
文書新規文書にコード移設再現しない元文書の破損確定
実行OnTime/DoEventsで遅延不定期エラーが消える設計の見直し

補足:応急策・小技(状況別)

  • フォームを開くと落ちるInitializeで外部参照やファイルI/Oを実行しない。Activate後にOnTimeで遅延。
  • 一部のユーザーのみ再現:各端末の参照設定を比較。MISSINGや重複がある端末で解除→再チェック。
  • 起動時に複数ドキュメントを自動オープン:同時ロードで競合しやすい。順序を制御し、重処理は最終段に。

最後に(実装者へのメッセージ)

開発中は参照が増えがちですが、Mac環境はWindowsに比べて“余計な参照”の悪影響が表面化しやすい傾向があります。必要最小限遅延実行テンプレート健全化をセットで運用すれば、今回のような再発はほぼ防げます。本記事の手順を上から順に実施し、まずは「エラーが消える状態」まで確実に戻しましょう。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次