Excel schließt nicht richtig
-
Hallo wieder,
Ich arbeite mit Ole Excel Automatisierung.
Da mache ich folgends:
- eine ExcelTabelle erstellen (nicht sichtbar)
- Werte reinschreiben
- Sheet abspeichern
- Excel schließen- Dann bei ButtonClick ExcelTabelle wieder öffnen
- Andere Werte hinzufügen
- abspeichern
- und wieder schließen.Das Problem ist, wenn ich die ExcelTabelle zum 2. Mal öffne, erstellt er mir eine Resume Datei (keine Ahnung was das ist).
Noch schlimmer: Er schließt Excel nicht mehr richtig, denn im Taskmanager sehe ich, dass Excel immer noch läuft.
Hier mal meine Code:
// Excel öffnen, neues workbook, neues Sheet m_vExcel = CreateOleObject("Excel.Application.8"); m_vExcel.OlePropertySet("Visible",false); m_vWorkbooks_00 = m_vExcel.OlePropertyGet("Workbooks"); m_vWorkbooks_00.OleProcedure("Add"); vWorkbook = m_vWorkbooks_00.OlePropertyGet("Item",1) vWorksheets = vWorkbook.OlePropertyGet("Worksheets"); vWorksheets.OleProcedure("Add"); vWorksheet = m_vExcel.OlePropertyGet( "ActiveSheet" ); vWorksheet.OlePropertySet("Name","Test"); // etwas hineinschreiben m_vExcel.OlePropertyGet("Cells").OlePropertyGet("Item",2,3).OlePropertySet("Value",15); // jetzt speichern m_vExcel.OlePropertySet("DisplayAlerts",true); vWorkbook.OleProcedure("SaveAs",StringToOleStr(DateiName), true); // Hier schließen und Excel beenden m_vWorkbooks_00.OleProcedure("Close"); m_vExcel.OleProcedure("Quit"); //Jetzt wieder öffnen m_vExcel = CreateOleObject("Excel.Application.8"); m_vExcel.OlePropertySet("Visible",false); m_vWorkbooks_00 = m_vExcel.OlePropertyGet("Workbooks").OlePropertyGet("Open",StringToOleStr(Dateiname)); //Jetzt wieder etwas hineinschreiben m_vExcel.OlePropertyGet("Cells").OlePropertyGet("Item",5,3).OlePropertySet("Value",StringToOleStr(Ungueltig)); //Speichern m_vExcel.OlePropertyGet("Save"); //Schließen und beenden m_vWorkbooks_00.OleProcedure("Close"); m_vExcel.OleProcedure("Quit");
So, beim ersten mal schließen, wird excel total beendet, nur wenn ich die gleiche tabelle "Dateiname" wieder öffne, dann bleibt Excel irgendwie geöffnet. Und natürlich die Resume Datei wird erstellt.
Ich möchte natürlich, dass das Programm "sauber" auf dem system läuft und allen schmutz wieder bereinigt...Grüße erstmal und danke im Voraus,
Puphol
-
hast du das durch debuggt ?
//Speichern m_vExcel.OlePropertyGet("Save"); //Schließen und beenden m_vWorkbooks_00.OleProcedure("Close"); m_vExcel.OleProcedure("Quit");
speziell den obigen teil
-
@ intrudor
Ok, ich habs gesehen,
hat aber funktioniert. Muss das OleProcedure sein?? Oder OleFunction??Was für Fehler siehst Du sonst in meinem Code? Ist nicht 1:1 wie im Programm, aber so etwa läufts da ab.
Danke nochmal,
Puphol