Я искал и ничего, что я нашел, не совпадало с тем, что я ищу (или, возможно, мои поиски не попали в комбинацию слов).
В C # я создал лист Excel, используя Interop.Excel, в который я вставляю некоторые данные и создаю диаграмму. Это все работает нормально, когда я делаю xlWorkBook.SaveAs.
Что я хочу сделать, так это попросить пользователя поместить автоматическую рабочую книгу куда-нибудь с собственным именем файла. Я пытался (http://p2p.wrox.com/vb-how/63900-disabling-second-excel-save-prompt.html), где он в основном делает новый SaveFileDialog, затем, если его == ОК, он создает свой лист Excel, то он говорит, что его workbook.SaveAs (FilePathFromSaveAsDialog) вызывает приглашение. Когда я пытаюсь это сделать, я получаю ошибка «Отображение модального диалогового окна, когда приложение не работает в режиме UserInteractive, не является допустимой операцией».
Я вставил бы весь свой код, но он находится в отдельной системе, но справедливо только:
using Excel = Microsoft.Office.Interop.Office
//....then on click of link button....
Excel.Application xlApp;
Excel.Workbook xlWorbook;
Excel.Workbooks xlWorkbooks;
Excel.Sheets xlSheets;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.ApplicationClass();
xlWorkBooks = xlApp.Workbooks;
xlWorkBook = xlWorbooks.Add(misValue);
xlSheets = xlWorkBook.Worksheets;
xlWorkSheet = (Excel.Worksheet)xlSheets.get_Item(1);
//....Now I fill my Excel sheet data and make my chart >>> then I close like below...
xlApp.DisplayAlerts = true;
//HERE IS WHERE I WANT TO EITHER PASS THE PATH AND FILE NAME FROM USER OR USE A PROMPT
xlWorkBook.SaveAs("Test.xls", Excel.XFileFormat.XlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
//finally I release all my objects via Marshal.ReleaseComObject then GC.Collect