OLE mit Excel

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

OLE mit Excel

Beitrag von monta »

Wie ist es denn möglich, Excel mittels Lazarus über OLE zu automatisieren?
Gibt es den Weg über OLEVariant, oder etwas vergleichbares, wie in Delphi?
Johannes

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Jab sollte mit dem 2.2.0 gen, Beispiele gibts ja für Delphi genug... probiert hab ichs mit Outlook bisher
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

Christian hat geschrieben:Jab sollte mit dem 2.2.0 gen, Beispiele gibts ja für Delphi genug... probiert hab ichs mit Outlook bisher


Klingt vermesssen, aber hast du ein Beispiel für das ? Ich nehme an du verwendest 'late bindings'.

THX

Andi
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

http://www.dsdt.info/tipps/?id=605

was sind "late bindings" ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ach du woolltest das ganze für outlook

http://www.dsdt.info/tipps/?id=608

damit hab ich auch angefangen und dann stückchenweise aufgebohrt
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

Christian hat geschrieben:was sind "late bindings" ?


Ganz einfach: 'late binding' sind aufrufe an den Automationserver die ohne TLB gehen. Sprich es wird über das IDispatch Interface zugegriffen.

Beim 'early binding' wird über IUnknown und die VMT gegegangen. Vorteil ist, das ein Compiler bereits zur Komplilerzeit weiss, was für Objekte und Interfaces vorhanden sind.
Nur wie komme ich da bei Lazarus (und FP) von der TLB zur Interfaceunit. ?

Vielleicht um meine Frage mehr zu präzisieren:
'Klingt vermesssen, aber hast du ein Beispiel in Code der mit dem Lazarus geht für das ? '
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Siehe Links oben.

Ein Tool um ne Unit aus ner TLB zu erzeugen hab ich beim fpc auch noch nicht gesehn. Ich hab das dann mit Delphi gemacht (notgedrungenerweise). Aber die Outlook Geschichte geht ohne TLB.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

Christian hat geschrieben:Siehe Links oben.

Dort steht 'Portal' und 'Forum'.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

ha ha in meinen Beiträgen sind so unterstrichene Schriften wo sich der Mauszeiger ändert wenn du da mit der Maus drüber gehst klick da mal drauf da findest du deine Beispiele :p
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Ich muss das nochmal aufgreifen...

Christian hat geschrieben:Ein Tool um ne Unit aus ner TLB zu erzeugen hab ich beim fpc auch noch nicht gesehn. Ich hab das dann mit Delphi gemacht (notgedrungenerweise). Aber die Outlook Geschichte geht ohne TLB.


Was hast du mit Delphi gemacht. Hast du die Unit aus der TLB erstellt und die ohne Probleme in Laz verwendet oder hast du komplett in Delphi programmiert?
Bei ersterem würde mich interessieren, ob ich da was spezielles brauch, oder ob jedes Delphi da ausreicht.
Dann würde ich mal den weg über die tlb probieren, da ich mit late bindings irgendwie nicht weiter komme.
Johannes

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

1.

Hab mein Delphi 6 genommen und die Unit zur TLB generiert.
Im Falle Excel und Outlook und co, brauchst das aber ja noch nicht mal da kannst ja über OLEVariant gehn.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

monta hat geschrieben:Bei ersterem würde mich interessieren, ob ich da was spezielles brauch, oder ob jedes Delphi da ausreicht.
Dann würde ich mal den weg über die tlb probieren, da ich mit late bindings irgendwie nicht weiter komme.


Ab D4 geht es, mit D5 und besser ist die TLB-umsetzter stabiler geworden.

Wo bist du mit den late bindings stecken geblieben ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Also Ziel war es, verschiedenen in Excel zu öffnende Dateien in CSV zu konvertieren. Es wiederstrebt mir zwar, aber Excel und Windows kann vorausgesetzt werden, daher die Lösung, die Datei in Excel zu öffnen und dann entsprechend wieder als CSV zu speichern.

Ich bekomm momentan über die late bindings zwar eine Instanz von Excel die auch im Taskmanager erscheint, aber die Datei wird nicht geöffnet. Und Excel wird auch nicht angezeigt.

Code: Alles auswählen

uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs,
  windows, Buttons, OleServer, ole2, variants, ActiveX, comobj;
 
procedure TForm1.BitBtn1Click (Sender: TObject );
var Excel: variant;
begin
  Excel := CreateOleObject('Excel.Application');
  ShowMessage('Create');
  Excel.visible := true;
  Excel.Documents.Open('Mappe1.xls');
//  WB := Excel.WorkBooks.Open('Mappe1.xls');
//spätestens hier ist Schluss


Bei Excel.visible := true erscheint beim ausführen die Meldung 'Mitglied nicht gefunden', aber gut, das muss ja nicht unbedingt sein (soll eh mehr Stapelkonvertierung werden).

Aber das öffnen geht auch nicht:

Bei Excel.Documents.Open('Mappe1.xls'); erscheint: 'Method 'Documents' is not supported'

Und bei den Varianten mit Excel.WorkBooks.Open('Mappe1.xls'); erscheint ebenfalls 'Mitglied nicht gefunden'
Johannes

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Kann ich dir leider auch nicht weiter helfen, wie gesagt habs nur mit Outlook probier und da ging alles. Probier doch mal den weg über die TLB. Dann sollte er die Eigenschaften auf jeden Fall finden.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

moritz
Beiträge: 16
Registriert: So 31. Dez 2006, 16:02
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Leipzig

Beitrag von moritz »

Hallo, Monta, bist Du mit OLE unter Windows weitergekommen. Ich habs bis jetzt nicht geschafft, Excel zu starten, geschweige denn OpenOffice. Mit VBA und OpenOffice kenn ich mich ganz gut aus und wollte das gleiche mit Lazarus versuchen, hab aber leider keinen Erfolg damit.
Und unter Linux ist der Zugriff auf OO anscheinend möglich, aber ohne funtionierendes Beispiel für mich jenseits von gut und böse,
Viele Grüße
Moritz

Antworten