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


Anmelden zum Antworten