2013-11-14 16 views
5

Excel Interop COMオブジェクトを使用しています。 私は、Excelアプリケーションを開いて閉じ、次にExcelワークブックとシートを開く方法を書いています。私は彼らに取り組んだ後、私はアプリケーションとワークブックの両方を閉じています。 私の問題は、このメソッドは繰り返し複数回呼び出すことができ、シートとアプリケーションが閉じるときに、私が行った変更を保存したい場合は、Excelアプリケーションからメッセージを取得します。方法は "いいえ"を押すまで立ち往生しますが、毎回押すようにユーザーに指示することはできません。ExcelでExcelアプリケーションを終了するメッセージを保存しないでInterop

このメッセージを受け取ることなく、または少なくともコードで回答することなくアプリケーションを終了するにはどうすればよいですか?

これらは私がアプリケーションおよびブックを閉じるために使用していた方法です:

private void FreeWorkSheetResources(Excel.Worksheet sheet) 
{ 
    Marshal.ReleaseComObject(sheet); 
    sheet = null; 
} 

private void FreeWorkBookResources() 
{ 
    if (_excelSheets != null) 
    { 
    Marshal.ReleaseComObject(_excelSheets); 
    _excelSheets = null; 
    } 
    _excelWorkBook.Close(); 
    Marshal.ReleaseComObject(_excelWorkBook); 
    _excelWorkBook = null; 
} 

private void FreeApplicationResources() 
{ 
    _app.Quit(); 
    Marshal.ReleaseComObject(_app); 
    _app = null; 
    GC.Collect(); 
} 

そして、これは私がそれらを使用している方法です:ワークブックを閉じるとき

if (_app == null) 
    { 
    _app = new Excel.Application(); 
    } 
    if (_excelWorkBook == null) 
    { 
    _excelWorkBook = GetWorkBook(_filePath); 
    } 
    .... 
    .... 
    FreeWorkBookResources(); 
    FreeApplicationResources(); 
+0

を@adilする.Visible = flase.DisplayAlerts = False

感謝を設定して、あなたはワークシートの右側を上行っている変更を保存していませんか? –

+0

私はワークシートからの読み取りであり、更新はしていません。私は何か変更を保存したいのかどうか私に尋ねる理由を知らない。 –

+0

[ダイアログボックスなしでC#Excelワークブックを終了しようとしている]の複製(http://stackoverflow.com/questions/17413887/trying-to-exit -c-sharp-excel-workbook-without-a-dialog-box)を使用します。検索を使用してください。 – CodeCaster

答えて

7

次のステートメントを使用することができます。

object misValue = System.Reflection.Missing.Value; 
xlWorkBook.Close(false, misValue, misValue); 
+1

実際に変数を作成する必要はありません。以下は私のために働く:xlWorkBook.Close(false、Missing.Value、Missing.Value); –

+1

まだプロンプトが表示されている – Arbaaz

2

はこれを行います。あなたのExcelワークブックを閉じながら

_excelWorkBook.Close(true); 
+0

これは私のために働いた。受け入れられた回答が私のファイルを破壊しました(idk how)。 –

+0

私には役に立たなかったが、まだプロンプトが表示されている – Arbaaz

2

はこれを試してみてください:

excelApp.DisplayAlerts = False; 
//save and close your workbook 
excelApp.DisplayAlerts = True; 
+0

まだそのプロンプトが表示されています – Arbaaz

2

私の問題は類似していました。 Excelシートを生成してからPDFに変換する必要がありました。私の問題は、Excel AppがExitの前に保存するように表示して通知していたことでした。解決策はとても

+0

これは私のために働いた!構文は "myExcel.Visible = false; myExcel.DisplayAlerts = false;"でした。 – blackorchid

関連する問題