Nur selbst geöffnetes Excel wieder schliessen?



  • Hallo,

    mit folgendem Code öffne ich Excel und schreibe in eine Zelle ein Text. Dann schließe ich das Excel wieder.

    TExcelApplication *ExAp;
    TExcelWorkbook  *WB;
    TExcelWorksheet    *WS;
    
    ExAp = new TExcelApplication(NULL);
    WB = new TExcelWorkbook(NULL);
    WS = new TExcelWorksheet(NULL);
    
    Variant vSave, vFile, vRoute, vRow, vCol, vText;
    LONG wbID;
    wbID = 0;
    
    ExAp->Connect(); //mit Excel verbinden
    ExAp->set_Visible(0,1); //Excel sichtbar öffnen
    ExAp->Workbooks->Add(); //ein neues Workbook hinzufügen
    WB->ConnectTo(ExAp->ActiveWorkbook); //Workbook verbinden
    WS->ConnectTo(WB->ActiveSheet); //Worksheet mit Workbook verbinden
    
    WS->Cells->set__Default(vRow=1,vCol=1,vText="Test"); //in die Zelle A1 Test schreiben
    
    WB->Close(vSave=false,vFile,vRoute=false,wbID); //Workbook ungespeichert wieder schliessen
    
    ExAp->Disconnect(); //Excel trennen
    ExAp->Quit(); //Excel wieder schliessen
    
    delete WS;
    delete WB;
    delete ExAp;
    

    Der Code schliesst das Excel grundsätzlich. Sollte vor der Ausführung meines Codes schon ein Excel geöffnet sein, so wird dieses auch geschlossen.

    Wie bekomme ich es jetzt aber hin, nur das selbst von mir geöffnete Excel wieder zu schliessen und alle anderen, evtl. bereits geöffneten Excel, geöffnet zu lassen? 😕



  • Hallo Ralf,

    da hatte ich mal etwas vor einiger Zeit 🙄 Es sit so, dass jedes Programm, das gestartet wird, vom System eine ProzessID zugewiesen bekommt. Diese ist eindeutig. Diese kann man sich beim "Create-Prozess" auslesen und später darüber wieder schließen.

    Vieleicht hilfts ja...

    Gruß Torsten


Anmelden zum Antworten