09. februar 2004 - 12:44Der er
2 kommentarer og 1 løsning
Opret Excel fil - proces excel.exe driller
Jeg har fundet og tilrettet noget kode hvor jeg opretter et Excel dokument (via. MyOleVariant:= CreateOleObject('Excel.Application')) udfylder nogle af cellerne og gemmer det.
Det virker fint, bortset fra at jeg efterfølgende ikke kan dobbeltklikke på en xls fil, skærmen bliver da ikke opdateret og det fremgår somom Excel 'hænger'. Men Excel virker fint hvis jeg åbner det og går via 'file, open' for at åbne mit nyoprettede excel dokument.
Efter at have kørt mit kode (der opretter og udfylder en xls fil) fremgår excel.exe stadig af min liste over kørence processer, - hvis jeg 'slår den ihjel' manuelt virker det med dobbeltklik igen!
Noget tyder da på jeg ikke får ryddet pænt op, men jeg har kaldt diverse oprydningt metoder på MyOleVariant objektet.
Er der nogle der kender til dette og kan give mig et hint?
Hej Jeg har lavet noget tilsvarende med Excel og jeg afslutter med følgende 3 linier, så går det ok. Excel.WorkBooks.Close; Excel.Quit; Excel:=Unassigned;
Mit 'startkode': xlApp, ActiveWorkbook, ActiveWorksheet : OleVariant;
::
Function TMSExcel.Connect : Boolean; Var App : IUnknown; begin Result := False; Try if not Succeeded(GetActiveObject(StringToGUID('{00024500-0000-0000-C000-000000000046}'), nil, App)) then xlApp := CreateOleObject('Excel.Application') else xlApp := App As IDispatch; if VarIsEmpty(xlApp) then Raise EMSExcelException.Create(SExcelNotFound);
xlApp.Visible := False; xlApp.SheetsInNewWorkbook := 1; xlApp.DisplayAlerts := FDisplayAlerts; AddWorkbook; ActiveWorksheet := ActiveWorkbook.ActiveSheet; ActiveWorksheet.Activate; Result := True; Except on E:Exception do begin ErrorMessageDialog('TMSExcel.Connect', E.Message); end; end; end;
Mit 'slutkode': Function TMSExcel.Disconnect : Boolean; begin Result := True; Try if not VarIsEmpty(xlApp) then begin if xlApp.Visible then begin ScreenUpdate(False); xlApp.Visible := True; ScreenUpdate(True); end; // xlApp.Quit; // xlApp.Disconnect; // VarClear(xlApp); xlApp.WorkBooks.Close; xlApp.Quit; xlApp:=Unassigned; end; Except on E:Exception do begin Result := False; ErrorMessageDialog('TMSExcel.Disconnect', E.Message); end; end; end;
Der var ikke ryddet pænt op! VarClear skulle kaldes for alle ole-variable! Spørgsmål lukkes
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.