2012-01-11 8 views
23

Interopを使用してC#Windowsフォームアプリケーションから開いているカスタム非時間依存セル関数を持つExcelブックがあります.Excel。私はそれから4つの値を読んで、明示的な変更/計算を実行せずに、C#からそれを閉じます。C#のExcel/xlsmブックをカスタム関数付きで保存する方法

保存しないで直接閉じると、保存のプロンプトが表示されます。私はこれが、実際に数値的にも公式にも変化がないのに、Excelが自動的に再計算を開いて解釈するためだと思う。私もExcel.Application.Calculation = Excel.XlCalculation.xlCalculationManualと設定しました。保存プロンプトが表示されないようにするにはどうすればよいですか?

+2

を発見し、プロンプトを出す必要はありません。 – nawfal

答えて

41

は、Excelのオブジェクトを使用して、このようにワークブックを閉じてください:

Excel.Application xlApp ; 
Excel.Workbook xlWorkBook ; 
Excel.Worksheet xlWorkSheet ; 
object misValue = System.Reflection.Missing.Value; 

xlApp = new Excel.ApplicationClass(); 
xlWorkBook = xlApp.Workbooks.Add("Yourworkbook"); 

xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 

....do your stuff 

xlWorkBook.Close(false, misValue, misValue); 

xlApp.Quit(); 

近い方法で偽の変更を保存しないを示しています。

+1

はい!それはそれを修正した。ありがとう! –

+0

本当に 'System.Reflection.Missing.Value'引数を' Close'メソッドに渡す必要がありますか?私は虚偽を渡すだけで終わり、問題はまだありません。 –

+1

@JeremyCook いったんそれがあったときに、ドットネットアップデートで変更する必要があったかもしれません。 – Motes

0

最近、私は、Excelの自動化に取り組んでいたと私はあなたにもExcelのアプリはこれがすでに保存されていることを知らせるために保存する前に `workbook.Saved = true`を行うことができます。このリンクは完璧なソリューションです Kill Process Excel C#