アプリケーションで savefiledialog を使用してファイルを保存します。同じファイル名が既に存在する場合、置換するかどうかを尋ねるポップアップが表示されます。いいえを指定すると、予期しないシステム例外が発生します。以下はコードの一部です
string fname1 = "";
saveFileDialog.Title = "Save the Proofer Report";
saveFileDialog.Filter = "Excel Files (*.xls)|*.xls";
saveFileDialog.FilterIndex = 0;
saveFileDialog.InitialDirectory = "MyDocuments";
saveFileDialog.FileName = "Proofer Report";
aveFileDialog.AddExtension = true;
saveFileDialog.ShowHelp = true;
// saveFileDialog.ShowDialog();
Invoke((Action)(() => { saveFileDialog.ShowDialog(); }));
fname1 = saveFileDialog.FileName;
xlWorkBook.SaveAs(fname1, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
//system exception during save as
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
スタックトレース
Microsoft.Office.Interop.Excel._Workbook.SaveAs (オブジェクト ファイル名、オブジェクト FileFormat、オブジェクト パスワード、オブジェクト WriteResPassword、オブジェクト ReadOnlyRecommended、オブジェクト CreateBackup、XlSaveAsAccessMode AccessMode、オブジェクト ConflictResolution、オブジェクト AddToMru、オブジェクト TextCodepage、オブジェクト TextVisualLayout、オブジェクト ローカル) でProoferXML.MainForm.ProcessDocument(BackgroundWorker worker, DoWorkEventArgs e) in D:\ProoferXML\WindowsFormsApplication1\WindowsFormsApplication1\MainForm.cs:665行目 ProoferXML.MainForm.prooferWorker_DoWork(Object sender, DoWorkEventArgs e) in D:\ProoferXML\WindowsFormsApplication1\WindowsFormsApplication1 \MainForm.cs:1457行目
HRESULT から例外を取得する workbook.saveAs を使用して Excel を保存する場合: