Ich würde die frühe Bindung empfehlen und bei Problemen kurzzeitig auf die späte Bindung umschalten:
Delphi-Quellcode:
uses ExcelXP;
...
var Excel : TExcelApplication;
WB : _WorkBook;
x : OleVariant;
...
x := Excel.Workbooks.Open(strDokument);
// man kann hier sogar benannte Parameter verwenden.
// das erhöht die Lesbarkeit des Code und man erspart sich die "EmptyParam"-Orgie
x := Excel.Workbooks.Open(FileName:=strDokument);
// "FileName" ist der Parametername
// zur Sicherheit prüfen, dass auch wirklich ein Dispatch-Interface vorliegt:
if VarType(x) <> varDispatch
then
raise Exception.Create('
Problem bei Ansteuerung von Excel');
// und jetzt wieder zurück zur frühen Bindung
WB := IDispatch(x)
as _WorkBook;
// jetzt gibt es 2 Referenzen auf das Workbook-Objekt
// wer mag, kann jetzt die Referenz auf IDispatch-Interface freigeben
x := Unassigned;
Mit diesem Trick kann man das Beste aus beiden Welten (frühe und späte Bindung) vereinen.