hallo,
ich möchte programmtechnisch eine bilddatei in ein excelsheet einfügen.
ich dachte mir das so:
procedure TDataModule_Rabatte.gestallte_Layout(sheet: _worksheet);
begin
Sheet.Pictures.Insert('C:PICTURE.WMF').Select;
end;
...doch leider gibt mir delphi beim compilieren
den fehler, dass pictures noch zwei parameter haben möchte.
und die methode insert gibt es auch nicht.
unter excel im makro funktioniert es allerdings.
ich benutze delphi 6 und excel 2000.
weiss jemand rat ?
danke wisher
Seite 1 von 1
Delphi-excel-problem
Anzeige
#2
geschrieben 08. Januar 2004 - 14:51
Ich kenne mich mit den Makros nicht so aus. Aber muss man die nicht in Visual Basic schreiben. Lasse mich gerne eines besseren belehren.
Hast du nicht ein Delphi-Buch oder so. Da muesste das ja eigentlich drin stehen.
Hast du nicht ein Delphi-Buch oder so. Da muesste das ja eigentlich drin stehen.
#3
geschrieben 08. Januar 2004 - 15:27
Die Makros schon, aber imho meint er dass er zum Test den Befehl in einem VB-Makro geschrieben hat und das jetzt gern von Delphi aus machen würd ... ?
@wisher: Wenn du nur C:PICTURE.WMF angibst, ist das eine relative Pfadangabe, und das funktioniert nur lokal (also im selben Programm) wie man es will. Mit einer absoluten Angabe ('C:\PFAD\ZUR\DATEI\PICTURE.WMF') sollts eigentlich gehen
@wisher: Wenn du nur C:PICTURE.WMF angibst, ist das eine relative Pfadangabe, und das funktioniert nur lokal (also im selben Programm) wie man es will. Mit einer absoluten Angabe ('C:\PFAD\ZUR\DATEI\PICTURE.WMF') sollts eigentlich gehen
#4
geschrieben 09. Januar 2004 - 11:35
@dimension :
das ist schon klar... bin schon etwas länger im coder-geschäft
das sollte nur ein beispiel sein.
hier mal die antwort von herrn kosch aus www.entwickler-forum.de:
Hallo,
>..dass pictures noch zwei parameter haben möchte.
>und die methode insert gibt es auch nicht.
beim Zugriff über die frühe Bindung benötigt Delphi die importierte Typbibliothek (xyz_TLB.pas) des Automation-Servers. Es ist in der Tat so, das es bis Heute keine Delphi-Version gibt, die dabei keine Fehler macht. Dies hat zur Folge, dass sich im Worst Case der
a. Interface-Name, der
b. Methoden-Name sowie die
c. Parameter-Liste ändern.
Letztendlich sind diese Umbenennungen nicht wichtig, denn der aufgerufene COM-Server sieht immer nur die "richtigen" Aufrufe. Nur beim Compilieren achtet Delphi penibel darauf, dass wir exakt die Deklaration aus der importierten TLB-Daten verwenden.
Der Platzhalter EmptyParam hilft immer dann weiter, wenn bestimmte Parameter "leer" gelassen werden sollen. Bei der frühen Bindung müssen - im Gegensatz zur späten Bindung a la VBA - alle Parameter angegeben werden. Daher lassen sich die Makro-Beispiele nur dann 1:1 übernehmen, wenn die späte Bindung verwendet wird (aber diese hat unerwünschte Nebenwirkungen, so dass die frühe Bindung in der Regel die bessere Wahl ist, auch wenn wir dann mehr eintippen müssen).
... wurde nur zum teil daraus schlau.
das ist schon klar... bin schon etwas länger im coder-geschäft
das sollte nur ein beispiel sein.
hier mal die antwort von herrn kosch aus www.entwickler-forum.de:
Hallo,
>..dass pictures noch zwei parameter haben möchte.
>und die methode insert gibt es auch nicht.
beim Zugriff über die frühe Bindung benötigt Delphi die importierte Typbibliothek (xyz_TLB.pas) des Automation-Servers. Es ist in der Tat so, das es bis Heute keine Delphi-Version gibt, die dabei keine Fehler macht. Dies hat zur Folge, dass sich im Worst Case der
a. Interface-Name, der
b. Methoden-Name sowie die
c. Parameter-Liste ändern.
Letztendlich sind diese Umbenennungen nicht wichtig, denn der aufgerufene COM-Server sieht immer nur die "richtigen" Aufrufe. Nur beim Compilieren achtet Delphi penibel darauf, dass wir exakt die Deklaration aus der importierten TLB-Daten verwenden.
Der Platzhalter EmptyParam hilft immer dann weiter, wenn bestimmte Parameter "leer" gelassen werden sollen. Bei der frühen Bindung müssen - im Gegensatz zur späten Bindung a la VBA - alle Parameter angegeben werden. Daher lassen sich die Makro-Beispiele nur dann 1:1 übernehmen, wenn die späte Bindung verwendet wird (aber diese hat unerwünschte Nebenwirkungen, so dass die frühe Bindung in der Regel die bessere Wahl ist, auch wenn wir dann mehr eintippen müssen).
... wurde nur zum teil daraus schlau.
#5
geschrieben 10. Januar 2004 - 15:47
Naja die COM-Interfaces werden ja nicht im eigentlichen Sinn kompiliert, sondern zur Laufzeit verwendet und nur wenn die Definitionen mit ins Programm kommen, kontrolliert Delphi, ob alle Parameter der Funktionen gegeben sind und vom richtigen Typ sind - zur Laufzeit hingegen werden alle vergessenen Parameter durch EmptyParam ersetzt und wenn Excel da was anderes erwartet, bricht es ab. Zumindest meine Auffassung von dem Beitrag, ich mag COM persönlich nicht so
Thema verteilen:
Seite 1 von 1

Hilfe
Neues Thema
Antworten
Nach oben

