9

Microsoft Office Interop を使用していくつかの Excel ファイルを編集していますが、それらを閉じるときに使用します

outputExcelWorkBook.Close(false, paramMissing, paramMissing);

falseしかし、最初のパラメーターとして渡したにもかかわらず、ダイアログ ボックスが表示されます。また、2 番目のパラメーターとしてファイル パスを指定して試してみましtrueたが、どちらの場合も、閉じる前に保存するかどうかを尋ねるダイアログ ボックスが表示されます。ここで何が起こっているのか誰か教えてもらえますか?

4

2 に答える 2

13

Application.DisplayAlertsプロパティを に設定してみてくださいfalsefalse自動化ルーチンの大部分では、このプロパティを に設定すると便利な場合があります。戻る前に、前の値を復元することを忘れないでください。

Application applicationInstance = ...;
var oldDisplayAlertsValue = applicationInstance.DisplayAlerts;
applicationInstance.DisplayAlerts = false;
try
{
    outputExcelWorkBook.Close(false, Missing.Value, Missing.Value);
}
finally
{
    appliationInstance.DisplayAlerts = oldDisplayAlertsValue;
}
于 2013-07-01T21:24:26.363 に答える
3

これは私のために働いた:

  1. エクセルを起動

  2. ブックを開く

  3. アクティブなシートを取得して編集します (セル [2,2] に「テキスト」を追加)

  4. 「変更を保存する」ことを意味する true の単一パラメーターでワークブックを閉じます

  5. ダイアログ ボックスは表示されません。

注: パラメータを指定せずに Close を呼び出すと、変更を保存するように求められます。

    Microsoft.Office.Interop.Excel.Application excel = new Application();
    Microsoft.Office.Interop.Excel.Workbook workBook =
        excel.Workbooks.Open(fileLocation);
    Microsoft.Office.Interop.Excel.Worksheet sheet = workBook.ActiveSheet;
    sheet.Cells[2, 2] = "Text";
    workBook.Close(true);
    excel.Quit();
于 2013-07-01T21:43:49.233 に答える