Ich habe ein kleines Problem, das ich keine Lösung auf StackOverFlow finden konnte. Die Situation: Ich habe eine Anwendung, die EXCEL-Anwendung automatisch öffnet. Wenn es sofort geöffnet wird, erscheint ein Dialogfeld mit der Meldung "Das Dateiformat und die Erweiterung von xxx stimmen nicht überein. Die Datei könnte beschädigt oder unsicher sein." Ich versuche eine Anwendung zu erstellen, die sich auf diesen laufenden EXCEL konzentriert Anwendung und drücken Sie die "JA" und speichern Sie die Excel mit VERSION 2007, so dass diese Fehlermeldung nicht wieder auftauchen wird. HierC# Excel-Anwendungsdatei Format Problem
ist das, was ich bisher:
var excelApp = (Excel.Application)Marshal.GetActiveObject("Excel.Application");
var c = excelApp.ActiveDialog;
Nicht sicher, wie ein Click-Ereignis auf der JA zu tun, um die excelApp Variable. Ich habe auch versucht
durchforeach (Process proc in Process.GetProcesses())
{
if (proc.MainWindowTitle.Contains("Excel"))
....
}
6. November 2017: Dies ist, was ich bisher jetzt haben:
var oExcelApp = (Excel.Application)Marshal.GetActiveObject("Excel.Application");
Process[] processlist = Process.GetProcessesByName("Excel"); //Shows number of running Excel apps
foreach (Process theprocess in processlist) //foreach Excel app running
{
if (oExcelApp.Workbooks.Count >= 0) //for worbooks in each Excel app
{
foreach (Excel.Workbook wkb in oExcelApp.Application.Workbooks)
{
wkb.SaveAs(filePath, Excel.XlFileFormat.xlExcel8);
wkb.Close(true, null, null);
Marshal.FinalReleaseComObject(wkb);
}
oExcelApp.Workbooks.Close();
}
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
oExcelApp.Quit();
Marshal.ReleaseComObject(oExcelApp);
}
Dies funktioniert nur, wenn es keine Fehlermeldung am Anfang war. Wenn der Prozess automatisch Excel öffnet und eine Fehlermeldung anzeigt, wird dies eine Ausnahme auslösen, da die Anwendung mit der Fehlermeldung beschäftigt ist.
Ich habe einen Fehler, wenn ich den Code versuchen, aber wenn ich es auf die folgende Änderung ich nicht den Fehler und auch keinen Dialog. 'var excelApp = new Microsoft.Office.Interop.Excel.Application(); var x = ExcelApp.ActiveDialog; ' – Sjips
Oh sorry, ich verwende ' mit Excel = Microsoft.Office.Interop.Excel' –
Wenn Sie XlFileFormat.xlExcel8 verwenden, müssen Sie die Datei mit einer .xls-Erweiterung speichern. Crystal Ball sagt, dass Sie .xlsx verwenden, ein sehr anderes Format. –