【Word VBA】Microsoft Visual C++ Runtime Library の Assertion failed! エラーの対処方法

2025年9月4日

2025年8月のWordのアップデートにより、Word VBAの一部の機能が使えない不具合が発生しています。その結果、このブログに掲載されている特定のマクロやWordアドイン(色deチェックGreenT山猫の手頻度のヒントなど)が不具合で動作しないという結果につながっています。その症状と対処方法を紹介します。

2025年9月10日にWordの不具合が解消され、このエラー表示がなくなりました。Wordを更新してご利用ください。

こちらで解決!

【Word VBA】(解消報告)Microsoft Visual C++ Runtime Library の Assertion failed! エラー

【Word VBA】Microsoft Visual C++ Runtime Library の Assertion failed! エラーの対処方法 で報告したエラーですが、2025年9月9日付の以 ...

症状

Word VBAの特定の処理(後述)をすると、以下のメッセージが表示されます。

Microsoft Visual C++ Runtime Library

Assertion failed!

Program: ...
File: g:\vba\src\65_VC8\VBA\rt\rtre.cxx
Line: 946

Expression: replaceVar.vt == VT_BSTR

For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts

(Press Retry to debug the application - JIT must be enabled)

発生原因

「特定の操作」とは、以下のような VBScriptRegExp(正規表現)を用いた置換処理です。私が確認した処理はこれだけですが、他の処理でも不具合が出ているのかもしれません。

以下の処理では、"これはペンです。"という文字列内の"ペン"を"鉛筆"に置き換えようと試みますが、現時点のWordの最新版では不具合がでて上記エラーメッセージを表示し、置換できません。


Sub 置換サンプル()

 '文字列を置換する

 'myText: 置換対象の文字列全体
 'myFind:検索する文字列
 'myReplace:置換後の文字列

 Dim myText As String: myText = "これはペンです。"
 Dim myFind As String: myFind = "ペン"
 Dim myReplace As String: myReplace = "鉛筆"

 Dim RE: Set RE = CreateObject("VBScript.RegExp")

 With RE
  .Pattern = myFind
  .IgnoreCase = True     ''大文字と小文字を区別しない
  .Global = True       ''文字列全体を検索
  myText = .Replace(myText, myReplace)
 End With
 
 Set RE = Nothing

 MsgBox myText

End Sub

予防方法

まだこの不具合が発生していない場合には、以下の記事の「1.Officeの自動更新を無効にする」の項目を参照し、Wordの自動更新を無効にしてください。

【Wordアドイン】エラー対策としてWordを前のバージョンに戻す方法(2025年8月版)

この予防策をしない場合、自動更新が有効になっているWordであれば、いずれこの記事で紹介しているエラーが発生してしまいます。

不具合対策

Wordを不具合が起こる前のバージョンに戻す(ロールバックする)方法を、以下の記事で紹介しました。

【Wordアドイン】エラー対策としてWordを前のバージョンに戻す方法(2025年8月版)

不具合対策で失敗したら

上記の記事に従ったものの、うまくいかない場合の対処方法を、以下の記事で紹介しました。

【Wordアドイン】Wordを前のバージョンに戻せない場合の対処方法

今後の予定

このバグが修正されたことを確認したら、ブログ記事にします。そのときに、Wordの更新を有効に戻してください。

関連記事

-コード
-,