Announcement

Collapse
No announcement yet.

Excel-Prozess wird nicht beendet

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Excel-Prozess wird nicht beendet

    Hallo zusammen,

    ich habe das Problem, dass in meinem Programm, welches auf Excel zugreift, der Prozess nicht richtig beendet wird.
    Erst wenn auch das Programm beendet wird, ist auch der Excel-Prozess terminiert.
    Könnte mir bitte jemand weiterhelfen? Danke im voraus!
    Anbei ein Auszug auf den es ankommt, denke ich...

    WS1.SaveAs(s+LNummer+'_Erfassung.xls',emptyParam,e mptyParam,emptyParam,emptyParam,emptyParam,emptyPa ram,emptyParam,emptyParam,emptyParam);

    WBk1.Close(SaveChanges,emptyParam,emptyParam,lcid) ;

    ExcelWorkBook1.Disconnect;
    ExcelWorkSheet1.Disconnect;
    ExcelApplication1.Disconnect;
    ExcelApplication1.DisplayAlerts[lcid] := false;
    ExcelApplication1.Quit;

  • #2
    Hallo,

    die Reihenfolge des Aufrufs von <b>Disconnect</b> und <b>Quit</b> stimmt nicht. Man muss die Interface-Zeiger aller beteiligten Excel-Objekte am Ende in umgekehrter Reihenfolge wieder freigeben. Das folgende Beispiel demonstriert dies:
    <pre>
    <b>procedure</b> TForm1.Button_1Click(Sender: TObject);
    <b>begin</b>
    FLCID := GetUserDefaultLCID;
    ExcelApplication1.Connect;
    ExcelApplication1.Visible[FLCID] := True;
    ExcelApplication1.UserControl := True;
    <b>end</b>;

    <b>procedure</b> TForm1.Button_2Click(Sender: TObject);
    <b>begin</b>
    ExcelApplication1.Workbooks.Open(cXLS_FileName, False, False,
    EmptyParam,<font color="#9933CC">''</font>,False,False,EmptyParam,
    EmptyParam,false,false,EmptyParam,false,0);
    ExcelWorkbook1.ConnectTo(ExcelApplication1.ActiveW orkBook);
    FSheetCount := ExcelWorkbook1.Worksheets.Count;
    ShowMessage(Format(<font color="#9933CC">'Es wurden %d Worksheets im Workbook gefunden.'</font>,
    [FSheetCount]));
    <b>end</b>;

    <b>procedure</b> TForm1.Button_6Click(Sender: TObject);
    <b>begin</b>
    ExcelWorksheet1.Disconnect;
    <font color="#003399"><i>// Workbook ohne Speichern schliessen</i></font>
    ExcelWorkbook1.Close(False);
    ExcelWorkbook1.Disconnect;
    <font color="#003399"><i>// Excel beenden</i></font>
    ExcelApplication1.Quit;
    ExcelApplication1.Disconnect;
    <b>end</b>;
    </pre&gt

    Comment


    • #3
      Recht herzlichen Dank Herr Kosch!!

      Comment

      Working...
      X