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系統です。どれも「内部で前提としていた部品の不一致」が引き金になります。
- 参照ライブラリの破綻・重複:Office更新で型ライブラリの識別子やパスが揺れ、同一名ライブラリが二重登録/欠落(MISSING)する。
- グローバルテンプレート(Normal.dotm)やアドインの不整合:読み込み順や壊れでVBA環境の初期化に失敗する。
- 保存場所・ファイル状態の問題:クラウド同期直後のロック/ネットワーク越しの遅延で、実行時に読み込みが間に合わない。
- タイミング依存の実行:文書/フォームが完全にロードされる前にマクロが動いて競合。
最短で試す解決チェックリスト(結論先出し)
まずは次の表を上から順に実施してください。すべてGUI操作で完結し、失敗時の巻き戻しも容易です。
| 手順 | 内容 | 目的/補足 |
|---|---|---|
| 1 | Wordをセーフモード(クリーン起動)で起動 Mac版は Word を終了後、Shift を押しながら Dock から起動 | 追加アドイン・テンプレートが原因か切り分ける |
| 2 | ファイルをローカル(Mac本体)に保存してから実行 | ネットワーク/クラウド経由保存時のアクセス競合を回避 |
| 3 | VBA 参照ライブラリを確認・整理 VBE → ツール ▷ 参照設定 で重複・不要なチェックを外す → 保存 → 必要に応じて再チェック | 重複参照(例: Microsoft Office 16.0 Object Library が2つある等)や「Normal」テンプレート参照の欠落がエラー原因になることがある |
| 4 | 新規文書でマクロをテスト | 既存文書の破損が原因かを判定 |
| 5 | マクロ実行を遅延させるApplication.OnTime When:=Now + TimeValue("00:00:10"), _ | ドキュメント/ユーザーフォームのロード完了前に実行される競合を回避 |
実際の解決例(再現済み)
- 参照設定で二重に登録されていた 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参照ライブラリを確認・整理する
- VBEを開く(⌥F11 または Alt+F11)。
- メニュー「ツール ▷ 参照設定」を開きます。
- 次を重点的に確認:
- MISSING(参照不可)が付いたライブラリはチェックを外す。
- 同名の重複(例:Microsoft Office 16.0 Object Library が2つ)があれば一方を外す。
- 使用していないライブラリ(外部アプリ操作、古いアドイン由来など)は外す。
- 一度保存→Wordを終了→再起動し、必要に応じて本当に必要なライブラリだけ再チェック。
- 最後に、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
新規文書で最小マクロを実行して切り分ける
- 新規文書(空白)を作成。
- 標準モジュールを追加し、次の最小コードでテスト:
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は次回起動時に新規作成します)。
- Wordを終了。
- 次のパスで
Normal.dotmをNormal_old.dotmなどにリネーム:~/Library/Group Containers/UBF8T346G9.Office/User Content/Templates/Normal.dotm
- 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表示のものから外してください。外したら必ず保存→再起動→コンパイルで整合性を確認。必要なライブラリ(例:VBA、Microsoft Word 16.0 Object Library、Office 16.0 Object Library など)だけ残すのが基本です。
Q. マクロ開始を遅らせる以外の安定化はありますか?
A. フォームの Initialize では重い処理を行わず、Activate 以降で実行する、Application.ScreenUpdating や Application.EnableEvents をシナリオに応じて制御する、などの工夫も有効です。
トラブル発生から復旧までのモデルケース
- 更新後に既存マクロが全滅。エラーダイアログは毎回 &H*000FFF (-2147418113)。
- Shift起動で停止。アドイン/テンプレート系が疑わしい。
- ローカル保存に退避 → 最小マクロは成功。文書依存の要素あり。
- 「参照設定」で Office 16.0 Object Library が重複。一方を外して保存→再起動→再チェック。
- 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に比べて“余計な参照”の悪影響が表面化しやすい傾向があります。必要最小限・遅延実行・テンプレート健全化をセットで運用すれば、今回のような再発はほぼ防げます。本記事の手順を上から順に実施し、まずは「エラーが消える状態」まで確実に戻しましょう。

コメント