Einzelnen Beitrag anzeigen

Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#1

[TExcelApplication] Unterschiede 97 / XP (2000)

  Alt 21. Aug 2006, 10:31
Hallo zusammen,

ich habe in meiner Anwendung Funktionalitäten, die mir Excel-Sheets erstellen. Bisher habe ich unter D7 Prof. mit der 97er-Office-Komponenten gearbeitet. Beim Umstieg auf BDS2006 stehen mir ja nur 2000 oder XP bei der Installation zur Verfügung. Leider verhält sich meine Anwendung beim Generieren der Excel-Sheets jetzt anders.

Bisher konnte der Anwender Excel-Sheets in der Form generieren, dass nach erfolgter Erstellung Excel mit dem erstellten Sheet sichtbar am Bildschirm war (was dann der Anwender damit macht - speichern oder drucken - ist ihm überlassen).

Unter BDS2006 mit OfficeXP-Unterstützung ist es jetzt so, dass Excel nach erfolgter Erstellung nicht mehr sichtbar wird.

Grundsätzlich verwende ich TExcelApplication und Co. so:

Delphi-Quellcode:
procedure CreateMISExcel(aVTIST: TVirtualStringTree;aTitel: String; aExApp: TExcelApplication; aExBook:TExcelWorkbook; aExSheet: TExcelWorksheet);
var
 ...
begin
    strPath:=ExtractFilePath(Application.ExeName)+'Vorlagen\blanko.xls';
    OpenExcel(aExApp);
    aExApp.Workbooks.Open(strPath,EmptyParam,EmptyParam,EmptyParam,
                                  EmptyParam,EmptyParam,EmptyParam,EmptyParam,
                                  EmptyParam,EmptyParam,EmptyParam,EmptyParam,
                                  EmptyParam,EmptyParam,EmptyParam,FLCID);
    aExSheet.ConnectTo(aExApp.Sheets.item[1] as _WorkSheet);
    aExSheet.Cells.Item[1,1]:=aTitel;
    ...
    aExApp.Visible[FLCID] := true;
    CloseExcel(aExApp, aExBook, aExSheet);
end;

mit

procedure OpenExcel(aExApp: TExcelApplication);
begin
  FLCID:=GetUserDefaultLCID;
  aExApp.Connect;
  aExApp.Visible[FLCID] := False;
  aExApp.UserControl := False;
  aExApp.DisplayAlerts[FLCID]:=False;
  aExApp.AskToUpdateLinks[FLCID]:=False;
end;

und

procedure CloseExcel(aExApp: TExcelApplication; aExBook:TExcelWorkbook; aExSheet: TExcelWorksheet);
begin
  aExApp.Disconnect;
end;
Diese Lösung war bisher auch auch "sauber", also keine Excel-Instanzen mehr im Taskmanager o.ä.

Die Einzige Änderung, die ich in meinem Projekt bei der Portierung vornehmen musste, war 2 "EmptyParam"-Werte zusätzlich in
Delphi-Quellcode:
aExApp.Workbooks.Open(strPath,EmptyParam,EmptyParam,EmptyParam,
                                  EmptyParam,EmptyParam,EmptyParam,EmptyParam,
                                  EmptyParam,EmptyParam,EmptyParam,EmptyParam,
                                  EmptyParam,EmptyParam,EmptyParam,FLCID);
einzufügen, da sich offenbar die Definition geändert hat. Da ich keine Dokumentation zu den Parametern in der BDS-Hilfe finden kann, kann dieses Verhalten evtl. auch mit den neuen Parametern zusammenhängen.

Igotcha
  Mit Zitat antworten Zitat