私のアプリケーションでは、Excel文書にVBマクロが含まれているかどうかを確認する必要があります。私は、実行時エラー91Interop.Excelを使用して、ExcelファイルにVBAマクロが含まれているかどうかを確認してください
91でExcelからメッセージを取得するいくつかのExcelファイルと
internal static bool ExcelContainsMacros(string pathToExcelFile)
{
bool hasMacros = true;
Microsoft.Office.Interop.Excel._Application excelApplication = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook workbooks = null;
try
{
object isReadonly = true;
workbooks = excelApplication.Workbooks.Open(
pathToExcelFile, missing, isReadonly, missing, missing, missing,
missing, missing, missing, missing, missing, missing,
missing, missing, missing);
hasMacros = workbooks.HasVBProject;
LogHasMacros(hasMacros);
}
catch (Exception exception)
{
LogError(exception);
}
finally
{
excelApplication.Workbooks.Close();
excelApplication.Quit();
}
return hasMacros;
}
:変数オブジェクトまたはだから私は、Excelドキュメントを確認するには、次の方法を書いていますブロック変数が設定されていない
私はそれをデバッグし、excelApplication.Workbooks.Close();
の呼び出しでメッセージが表示されることを認識しました。このコード行を削除しても、excelApplication.Quit();
のコールで同じExcelメッセージが表示されます。
Excelシートを正しく閉じるとExcelがこのメッセージを表示しないようにするためには何が必要ですか?
あなたは.NET/C#、Microsoft.Office.Interop.Excel
オブジェクトライブラリと
Runtime.InteropServices.Marshal
オブジェクトを利用して、次の洗練されたコードスニペット、を参照することがあなたのタスクに関連する
作業中のワークブックを閉じる必要があります。 workbooks.Close() - ワークブックも、Workbooksオブジェクトとよく似ているので、変数にとって恐ろしい名前です。 – Sorceri
エラーのある行excelApplication.Workbooks.Close()を削除するだけで問題ありません。 –
'excelApplication.Quit();'を削除しても、Excelシートに何の影響もありませんか? – Tomtom