COM を利用して Excel を開くときに COMException(-2147021892) が出る
古いサードパーティー製の Excel 出力ライブラリが生成する Excel を
oBooks.Open(xls)
しようとすると下記のエラーが出ることがある。
Exception: System.Runtime.InteropServices.COMException はハンドルされませんでした。 ErrorCode=-2147021892 HelpLink=xlmain11.chm HResult=-2147021892 Message=このファイルから問題が検出されました。コンピューターを保護するため、ファイルは開かれません。 Source=Microsoft Excel
生成される Excel が安全だと分かっていてどうしても開きたい場合、以下の手順を行う。
(Excel2010 の場合)
hosts ファイルの編集
- notepad.exe を管理者で開く
- C:¥Windows¥System32¥drivers¥etc¥hosts を編集、下記を追加
192.168.0.1 example
Excel の設定
- ファイル -> オプション -> セキュリティセンター -> 「セキュリティセンターの設定」をクリック
- 信頼できる場所 -> 「プライベートネットワーク上にある信頼できる場所を許可する」をチェック
- 「新しい場所の追加」-> パスに「
¥¥example¥
」を入力 - 「この場所のサブフォルダーも信頼する」をチェック
「信頼できる場所」には IP アドレスを指定できないため、ホスト名でアクセスできるようにする必要がある。
参考:
- vba - Run-time error upon opening excel file - Stack Overflow
- Excelでネットワーク共有フォルダを信頼できる場所に追加するとエラーが表示される時の対処方法 | スキコミ
英語のエラーメッセージ(参考):
Run-time error '-2147021892 (80070bbc)': office has detected a problem with this file. To help protect your computer this file cannot be opened.