Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fehler bei Excel.workbooks.Open (...) (https://www.delphipraxis.net/118354-fehler-bei-excel-workbooks-open.html)

Andreas Leix 6. Aug 2008 12:33

Re: Fehler bei Excel.workbooks.Open (...)
 
Hallo,

ich wußte nicht, dass man mit Varianten solche "Schhweinereien" machen kann;
also Methoden aufrufen, die man eigentlich nicht kennt, ohne fixe Anzahl von Parametern etc...

Also erstmal vielen Dank an Euch !!

Jetzt hab ich aber dennoch ein paar Anmerkungen/ Fragen :

Folgender Code läßt sich nicht compilieren:

Zitat:

uses ExcelXP;
...
var Excel : TExcelApplication;
WB : _WorkBook;
x : OleVariant;
...
x := Excel.Workbooks.Open(strDokument);
das geht nur , wenn ich

Delphi-Quellcode:
var Excel : OleVariant ;
    Excel := CreateOleObject('Excel.Application');
    x := Excel.Workbooks.Open(strDokument);
...
schreibe.
Aber, hab ich den Kern des Tipps richtig verstanden ?

Man kann Ole-Varianten typisierten Variablen zuweisen
und dann auf die Methoden zugreifen ?

Geht das auch umgekehrt ?
also z.b. sowas :

Delphi-Quellcode:
var Excel: TExcelApplication ;
    WB,X: OleVariant;

begin
  Excel := TExcelApplication.Create ( nil );
  X:= Excel as OleVariant;
  WB:= X.WorkBooks.Open ('Blubber');
...
end;
Und wie stehts dann mit dem Freigeben der Referenzen aus ?


Noch eine andere Frage.
Wenn ich nur mit Varianten arbeite,
dann brauch ich auch das Unit ExceXP oder ähnliches nicht aufnehmen, oder ?

Dann geschieht das Hochfahren/ Ansprechen von excel rein durch ?
Delphi-Quellcode:
MyExcel := CreateOleObject('Excel.Application');
Gruß vom lernenden
Andreas

mkinzler 6. Aug 2008 12:40

Re: Fehler bei Excel.workbooks.Open (...)
 
Zitat:

Dann geschieht das Hochfahren/ Ansprechen von excel rein durch ?
Ja.
Zitat:

Man kann Ole-Varianten typisierten Variablen zuweisen
und dann auf die Methoden zugreifen ?
Ja. Die Aufrufe und Zugriffe werden zur Laufzeit an den entsprechenden COM-Server weitergeleitet. (späte Bindung)

Zitat:

Und wie stehts dann mit dem Freigeben der Referenzen aus ?
Man muss den ComServer(hier Excel) natürlich weieder beenden.

Zitat:

dann brauch ich auch das Unit ExceXP oder ähnliches nicht aufnehmen, oder ?
Nein.

sx2008 6. Aug 2008 13:55

Re: Fehler bei Excel.workbooks.Open (...)
 
Hoppla, da hab ich nicht richtig aufgepasst (das kommt davon, wenn man Sourcecode ohne IDE eintippt).
Delphi-Quellcode:
uses ExcelXP;
...
var Excel : TExcelApplication;
WB : _WorkBook;
x, wbs : OleVariant;
...
wbs := Excel.Workbooks as IDispatch;
x := wbs.Open(strDokument);
Wenn du die Unit ExcelXP oder Excel97 nicht aufnimmst, dann bist du ja komplett bei der späten Bindung,
die zwar sehr flexibel aber auch langsam und nicht typsicher ist.
Für kleinere Aufgaben mit Excel geht das durchaus in Ordnung.
Bei grösseren Aufgaben ist es besser, wenn man nicht alles über OleVariant (und IDispatch-Schnittstellen) abwickelt.

Andreas Leix 6. Aug 2008 15:49

Re: Fehler bei Excel.workbooks.Open (...)
 
Ok,jetzt habe ich einiges verstanden.

Jetzt komm ich weiter.

Also euch allen nochmal vielen Dank!

Gruß
Andreas


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:32 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz