Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Office 2010 und Delphi-7 (https://www.delphipraxis.net/176979-office-2010-und-delphi-7-a.html)

hesch21 8. Okt 2013 13:32

Office 2010 und Delphi-7
 
Hallo zusammen

ich sollte für einen Kunden eine Delphi-7-Applikatiom mit Office-Automation von Office-2003 auf Office-2010 umstellen. Leider kann ich das Programm nicht auf XE migrieren. Da sind derart viele speziell für den Kunden beschaffte Komponenten drin und der will kein Geld für diese Migration aufwerfen.
Eigentlich funktionieren alle Office-Schnittstellen-Funktionen auch unter Office-2010, nur will der Kunde, dass Dokumente direkt als PDF gespeichert werden können. Geht ja mit der neuen Funktion SaveAs2. Nur kennt Delphi7 die von Haus aus nicht. Ich hab deshalb versucht, das Microsoft Office XP Beispiel Wrapper-Komponenten für Automationsserver - Package zu deinstallieren und die Word-Typenbibliothek zu importieren, aber da bekomme ich einen Umwandlungsfehler.
Hat jemand eine Idee, wie ich die Office-2010-Funktionen ins Delphi-7 bekomme?

Bernhard Geyer 8. Okt 2013 13:40

AW: Office 2010 und Delphi-7
 
Für dies eine Funktion würde ich mit OleVariant und später Bindung arbeiten.

Delphi-Quellcode:
var
  myOleVar: OleVariant;

begin
  ...
  myOleVar = myWordDocument;
  myOleVar.SaveAs2(...);
  ...
end;

hesch21 8. Okt 2013 14:39

AW: Office 2010 und Delphi-7
 
Die Idee ist eigentlich schon gut nur ist leider mein Dokument leider kein OLEVariant. Mit dem ist zuvor schon ganz viel passiert, u.a. wurde es mit einer automatisch erstellten CSV-Datei zu einem Seriendruck-Dokument aufbereitet.
Der langen Rede kurzer Sinn:

Beim
myOleVar = myWordDocument;

stehe ich an (auch wenn ich den fehlenden Doppelpunkt einfüge)

Bernhard Geyer 8. Okt 2013 15:00

AW: Office 2010 und Delphi-7
 
Zitat:

Zitat von hesch21 (Beitrag 1231220)
Der langen Rede kurzer Sinn:

Beim
myOleVar = myWordDocument;

stehe ich an (auch wenn ich den fehlenden Doppelpunkt einfüge)

Am Bahnhof oder was? Was für ein Problem hast du genau mit meinen Quellcode?

hesch21 8. Okt 2013 15:15

AW: Office 2010 und Delphi-7
 
Also dämlich bin ich eigentlich nicht!

So wie Du es geschrieben hast:

-> Fehler ':=' erwartet aber '=' gefunden

wenn ich den Doppelpunkt einsetze (also myOleVar := myWordDocument;)

-> Fehler Inkompatible Typen 'OleVariant' und 'TWordDocument'

In etwa das, was ich versucht habe, zu erklären. Nichts da vom Bahnhof.

Morphie 8. Okt 2013 15:20

AW: Office 2010 und Delphi-7
 
Ich glaube aber, dass der Bahnhof nicht sehr weit weg ist...
Delphi-Quellcode:
...

uses
  ComObj;

...



var
  WordApp, WordDoc: OleVariant;
begin
  WordApp := CreateOleObject('Word.Application');
  WordDoc := WordApp.Documents.Add;
  WordDoc.SaveAs2(...);
  WordApp.Quit();

hesch21 9. Okt 2013 08:49

AW: Office 2010 und Delphi-7
 
Habe ja ein dickes Fell !

Lieber Morphie, das funktioniert prächtig! Ich bekomme ein wunderschönes LEERES PDF. Logisch, mit WordDoc := WordApp.Documents.Add; wird ein neues Dokument erstellt und dann gespeichert.
Nun, ich bin auch schon selbst auf die Idee gekommen, das mit einen WordDoc := WordApp.Documents.Open(FileName := FileName); zu ersetzen was sogar funktionieren würde wenn da nicht noch zwei kleine Details wären:
1. Die Datei FileName ist bereits anderweitig über die Wrapper-Funktionen mit Word geöffnet
2. Sie ist zudem mit einer CSV-Datei als Seriendruck-Datei verknüpft und ich will immer nur vom gerade aktuellen Seriendruck-Datensatz eine PDF-Datei erstellen

Ihr dürft mich ja ruhig an den Bahnhof stellen denn ich habe wirklich keine Ahnung von Word-Anbindung über OLE. Habe bisher immer die Delphi-Wrapper-Funktionen benutzt. Deshalb versuche ich seit gestern auch vergebens, die MailMerge-Funktion, also die CSV-Datei einzubinden.

Morphie 9. Okt 2013 08:52

AW: Office 2010 und Delphi-7
 
Zeig doch mal, wie du es bisher gemacht hast... (Code)
Das sollte dann über Ole auch so funktionieren...

hesch21 9. Okt 2013 09:15

AW: Office 2010 und Delphi-7
 
Delphi-Quellcode:

var lSaveDoc   : OleVariant;
var lSaveApp   : OleVariant;
var lSaveMail  : OleVariant;

begin
  lSaveApp := CreateOleObject('Word.Application');
  lSaveDoc := lSaveApp.Documents.Open(FileName := FileName);
  lSaveMail := lSaveDoc.MailMerge.OpenDataSource(NamCSV);
  lSaveDoc.SaveAs2(FileName := DokVerz + '\' + NewFile, FileFormat := 17);
  lSaveApp.Quit;
end;
Das funktioniert, es kommt aber immer eine Meldung, die CSV-Datei sei bereits offen, ob man mit einer Kopie arbeiten wolle. Ausserdem fehlt noch irgendwie die wirkliche Verbindung den abgespeichert wird in der PDF die Vorlage und nicht die Datei mit den Werten aus der CSV-Datei.

Morphie 9. Okt 2013 09:18

AW: Office 2010 und Delphi-7
 
Hast du vielleicht irgendwo im Hintergrund (Taskmanager > Reiter "Prozesse") noch WinWord.exe oder sowas geöffnet?


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:53 Uhr.
Seite 1 von 2  1 2      

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