OLE mit Excel
-
- 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
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?
Gibt es den Weg über OLEVariant, oder etwas vergleichbares, wie in Delphi?
Johannes
- af0815
- Lazarusforum e. V.
- Beiträge: 6764
- 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:
Klingt vermesssen, aber hast du ein Beispiel für das ? Ich nehme an du verwendest 'late bindings'.Christian hat geschrieben:Jab sollte mit dem 2.2.0 gen, Beispiele gibts ja für Delphi genug... probiert hab ichs mit Outlook bisher
THX
Andi
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- 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:
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
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/
- af0815
- Lazarusforum e. V.
- Beiträge: 6764
- 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:
Ganz einfach: 'late binding' sind aufrufe an den Automationserver die ohne TLB gehen. Sprich es wird über das IDispatch Interface zugegriffen.Christian hat geschrieben: was sind "late bindings" ?
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).
- af0815
- Lazarusforum e. V.
- Beiträge: 6764
- 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:
Dort steht 'Portal' und 'Forum'.Christian hat geschrieben:Siehe Links oben.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- 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:
Ich muss das nochmal aufgreifen...
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.
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?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.
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
- af0815
- Lazarusforum e. V.
- Beiträge: 6764
- 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:
Ab D4 geht es, mit D5 und besser ist die TLB-umsetzter stabiler geworden.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.
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).
-
- 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:
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.
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'
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
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
-
- 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
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
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