本サイトは広告・アフィリエイトプログラムにより収益を得ています
Excelが突然クラッシュする ― react-native-win32.dllが原因のApplication Errorの対処法

Excelが突然クラッシュする ― react-native-win32.dllが原因のApplication Errorの対処法

スポンサーリンク

Excelで文字を入力していると、特に端末に負荷がかかっていないのにもかかわらずExcelがフリーズし、アプリケーションクラッシュで落ちる、という症状を最近時々目にします。

特定のファイルや操作ではなく、普通に文字を入力しているだけで発生するし、再現性があり同じPCで繰り返し発生するので非常に厄介……

さらにOfficeスイートの再インストールだけでは解決せず、また症状再発の繰り返し……

結構長い事頭を悩ませていたのですが、いろいろと切り分けている中で、ようやく解決法が分かったので備忘録としてまとめます。

再インストールしても改善しないのであれば、イベントビューアを確認

最初症状が発生した際は、Microsoft Updateで配信されたパッチの問題かな、と考えOfficeスイートの再インストールを試してみました。

ですが、しばらくすると症状が再発してしまったので、きちんとイベントビューアの「Application」イベントログを確認することにしました。

イベントビューアはWindows上のログ(イベント)を統合的に確認できるツールで、Windowsキー+Rキーを押して「ファイル名を指定して実行」から、「eventvwr」と入力してEnterキーを押します。

今回はOSのエラーではなく、アプリケーションのエラーなので「Windowsログ」→「Application」を選択し、Excelがクラッシュした時間あたりのログを確認すると、下記のようなエラーログが確認できます。

  • レベル:エラー
  • ソース:Application Error
  • イベントID:1000
  • 障害が発生しているアプリケーション名:EXCEL.EXE
  • 障害が発生したモジュール名:react-native-win32.dll

なぜExcelでReact Nativeのモジュールがクラッシュを起こすのか

React NativeはもともとMetaが開発したクロスプラットフォームUIフレームワークで、有名どころでいえばMarkdownエディタのInkdropが挙げられます。

MicrosoftはこのReact NativeをベースにReacto Native for Windowsを開発し、Windows向けのネイティブUIコンポーネントとして活用しています。

Microsoft 365アプリ(Excel、Outlook、Teams、Wordなど)の一部のUI要素は、このReact Native for Windowsを使って描画されています。

つまり、Excelを使っている中でReact Nativeのモジュールがクラッシュを起こすことについては、特に不思議なことではないのです。

React Nativeのモジュールがクラッシュを引き起こすメカニズムはざっくりと書くと下記の通り。

  • Microsoft 365の更新で新しいバージョンのreact-native-win32.dllが配信されることがある
  • この更新により、特定の環境・バージョンの組み合わせでUI描画時にクラッシュが発生
  • 特にMicrosoft 365の「Current Channel(最新チャネル)」を使っている場合、最新のビルドが配信されるため、このような問題に遭遇しやすい

解決方法

Microsoft 365アプリ(Excelを含む)の更新チャネルを半年に1回の機能更新、品質気宇審は月次で行う最も安定した「Semi-Annual Enterprise Channel」に切り替えることで、安定版のリリースを利用する事で解決できます。

まずスタートボタンを右クリックし、「ターミナル(管理者)」をクリックし、管理者権限でターミナルを立ち上げます。

続いて下記のコマンドを実行し、Microsoft 365アプリの更新チャネルをSemi-Annual Enterprise Channelに切り替えたうえで、アップデートを実行します。

cd "C:\Program Files\Common Files\microsoft shared\ClickToRun"
.\OfficeC2RClient.exe /changesetting Channel=Broad
.\OfficeC2RClient.exe /update user

最後のコマンドを実行すると、Office製品のアップデートが開始されます。アップデートには数分から数十分かかるので、アップデートが完了するまで待ちます。

完了後、Excelを起動して症状が再発しないことを確認します。

各コマンドの意味

1行目の「cd “C:\Program Files\Common Files\microsoft shared\ClickToRun”」では、Microsoft 365アプリのClick-to-Run(C2R)更新ツールが格納されているフォルダに移動します。

OfficeC2RClient.exeは、Microsoft 365アプリの更新チャネル変更や、アップデートの手動実行を行うための公式ツールです。

2行目の「.\OfficeC2RClient.exe /changesetting Channel=Broad」では、Microsoft 365アプリの更新チャネルを変更しています。

「Channel=Board」オプションは、Semi-Annual Enterprise Channelの旧称で、OfficeC2RClient.exeでこの更新チャネルを指定する場合、Channel=BoardかChannel=SemiAnnualを利用します。

3行目の「.\OfficeC2RClient.exe /update user」でチャネル変更を適用し、該当チャネルの最新ビルドにアップデートします。

チャネルを変更しただけでは反映されず、このコマンドでアップデートを実行して初めてOffice製品のビルドが切り替わります。

なお、Excel以外のOfficeアプリを開いていると閉じるよう警告が表示されるので、本作業を行う場合は事前にOfficeアプリを閉じてから実行してください。

各更新チャネルの指定値と特徴

チャネル名指定値更新頻度特徴
Current ChannelCurrent月に複数回最新機能がいち早く使えるが、不具合リスクが最も高い
Monthly Enterprise ChannelMonthlyEnterprise月1回Currentより安定、企業向けのバランス型
Semi-Annual Enterprise ChannelBroadまたは SemiAnnual半年に1回
(セキュリティ更新は月次)
最も安定。機能更新は年2回
(1月と7月)

更新チャネル変更の影響

今回のコマンドを実行すると、更新チャネルがSemi-Annual Enterprise Channelに切り替わるため、最新機能の提供は半年遅れになります。

ただ、SOHOや中小企業環境では、最新機能よりも安定性が重要なケースが多いため、むしろこちらの方が適している場合が多いです。

もし社内の全PCで更新チャネルを統一する場合は、グループポリシーやInutneでの一括設定も可能です。

また、もし問題解決後に再度Current Channelに戻したい場合は、下記コマンドで元に戻せます。

cd "C:\Program Files\Common Files\microsoft shared\ClickToRun"
.\OfficeC2RClient.exe /changesetting Channel=Current
.\OfficeC2RClient.exe /update user

まとめ

Excelの文字入力中にフリーズ、クラッシュし、イベントビューアでreact-native-win32.dllが原因と判明した場合は、Microsoft 365アプリの更新チャネルの問題です。

再インストールなどでどうしても症状が改善しなかった端末が出た場合は、更新チャネルを変更してアップデートを試してみてください。

Semi-Annual Enterprise Channelは非常に保守的な更新チャネルなので、MonthlyEnterpriseをまずは試して解決するようであれば、MonthlyEnterpriseでの運用が一番バランスが取れた運用を取れます。

モバイルバージョンを終了