最近、Excel2007からExcel2010にアップグレードしましたが、既存のコードが失敗し始めたことがわかりました。
例外メッセージ:
Officeはこのファイルの問題を検出しました。コンピュータを保護するために、このファイルを開くことはできません。
これをファイルを開いた行までたどりました
excelApp.Workbooks.Open
ファイルを手動で開いた場合でも、保護されたビューのメッセージボックスが表示されます。
C#を使用してこれを回避するにはどうすればよいですか。
最近、Excel2007からExcel2010にアップグレードしましたが、既存のコードが失敗し始めたことがわかりました。
例外メッセージ:
Officeはこのファイルの問題を検出しました。コンピュータを保護するために、このファイルを開くことはできません。
これをファイルを開いた行までたどりました
excelApp.Workbooks.Open
ファイルを手動で開いた場合でも、保護されたビューのメッセージボックスが表示されます。
C#を使用してこれを回避するにはどうすればよいですか。
ステートメントの前に、Application.FileValidationプロパティ(Excel)の使用を確認してください。Open
Excelがファイルを開く前にファイルを検証する方法を返すか設定します。読み書き
検証に合格しなかったファイルは、保護されたビューウィンドウで開かれます。FileValidationプロパティを設定すると、その設定は、アプリケーションが開いているセッション全体で有効なままになります。
MsoFileValidationMode列挙型の列挙値の1つに設定できます
msoFileValidationDefault
msoFileValidationSkip
msoFileValidationSkipステートメントの前に設定するとOpen、チェックをバイパスする必要があります。
何かのようなもの
excelApp.FileValidation = MsoFileValidationMode.msoFileValidationSkip;
オープンステートメントの前。
ここでゲームに遅れますが、これはよくある迷惑です:「信頼できる場所」を定義する必要があります。
コードでスプレッドシート ファイルを開こうとすると、 「Office はこのファイルに問題を検出しました。コンピュータを保護するため、このファイルを開くことはできません。」という問題が発生する開発者はあなただけではあり ません。非常に役に立たないエラーメッセージです。
2010 年に DevHut.net で Daniel Pineault によって公開された Trusted Location コードを調べます。
DevHut コード例: VBScript を使用した信頼できる場所
C# フォーラムに VBA を投稿したことで、hellandgone に反対票を投じられることになるので、Daniel のコードの実装を投稿しない方がよいでしょう (そうです、私は VBA 開発者であり、VBA マクロを 1 日中叩いています。とがったものと中かっこ)。本当に VBA を見たい場合は、別の投稿への返信にあります。
https://stackoverflow.com/questions/2962728/office-trusted-locations/28115700#28115700
適切な挨拶は「共有して楽しむ」だと思います。
コードを再利用する場合は、元の作成者である Daniel Pineault に感謝の意を表してください。「専門家」サイトでは、出典を明記せずに広く公開されていますが、これはかなり失礼です。