【メモ】 VSTO Excel ドキュメント レベルのプロジェクト で 例外を処理しないと、.xlb に意図しない情報が保存される

現象を確認したのは、
Workbook クラスと、Worksheet クラス の Startup イベントで例外を発生させるとちょっと困ったことが起きました。


.xlb ファイルっていうのは、%APPDATA%\Microsoft\Excel に存在する、Excel のツールバーとかのカスタム設定を保存するファイルらしい。
Windows Vista では、%APPDATA% は C:\Users\<ユーザー名>\AppData\Roaming 、XP だと、C:\Document and Settings\<ユーザー名>\ApplicationData)
今回作成した VSTO の Excel アプリケーションでは、ListObject クラスに DataView をバインドしていて、列が削除出来ない様になってた。(なんか設定した記憶は無く、バインドしたらそうなってたと思う。)
※列が削除出来ないってのは、シートで列を選択して「右クリック」->「削除」が押せない状況。(削除が Disable な状態)キーボードのショートカット入力([ctrlキー] + [-])では削除出来る。


アプリケーションが正常に動作していた時は問題無かったのだが、Startup イベントで例外を発生させると何故か他の Excel ファイルを開いても列の削除が出来なくなってた。
んで、Microsoft Excel がエラーで起動できない場合の対処方法 を参考に、.xlb ファイルを削除したら直った。
ってことは 例外が発生して処理しなかったら、.xlb ファイルが意図せずに書き変わってるってこと?


VSTO で、例外を一元管理出来る方法ってあるのかな?
Windows アプリだったら、Application.ThreadException イベント で処理出来るんだけど。
(Windows アプリのメインスレッド以外で発生した例外や、Console アプリで発生した例外は、AppDomain.UnhandledException イベント だったと思う。こっちは、なんか動きが怪しかったような気がするけど。)

無かったら、イベント実装しているメソッドの全部を try〜catch で囲むしかないのかな…。