Autor |
Beitrag |
CitnAmor
      
Beiträge: 19
|
Verfasst: Mo 21.04.03 14:29
hallo, ich habe eine *.doc datei mit einigen leeren feldern, jetzt möchte ich diese mit delphi ausfüllen, weiss jemand wie das geht? 18a citn
_________________ yEaH..cAll..mE...tHe..wAndArA...
|
|
FloSch
      
Beiträge: 129
|
Verfasst: Mo 21.04.03 16:15
Hallo,
ab der Delphi Version 5 müssten IMHO COM-Objekte für Word bereit stehen. Ob nun Felder damit ausgefüllt werden könne wage ich zu bezweifeln - man müsste sich evtl. ein bisschen mehr mit der Materie auseinander setzen.
Grüße
Florian 
_________________ Windows 200 Prof. - Debian Sarge
D5 Prof & D6 PE - Kylix 3 Professional - Free Pascal
|
|
Ingo
      
Beiträge: 19
|
Verfasst: Mo 21.04.03 16:51
Hallo CitnAmor
Wie Florian schon gesagt hat kann man Word mit den ServerKomponenten oder auch mit Ole OleAutomatisierung steuern. Das Problem ist man kann damit auch Formularfelder ausfüllen, es gibt aber meines Wissens keine Möglichkeit Formularfelder zu füllen die geschützt sind (Dokumentenschutz). Bei weiteren Fragen einfach posten.
Gruß Ingo
|
|
CitnAmor 
      
Beiträge: 19
|
Verfasst: Mo 21.04.03 17:43
ich habe delphi 5 enterprise... würde also gehen..! also es geht um ein seriendruck dokument, was mit excel verknüft ist und sich da aus einer datenbank die daten zieht... jetzt will ich aber auf excel und word verzichten. wie ich die daten aus einer excel datenbank bekomme weiß ich, jetzt wollte ich das dokument nehmen, die formelfelder löschen neu abspeichern und dann mit delphi ausfüllen...! aber da hängs halt bei mir.... wäre cool wenn mir da jmd helfen könnte...
_________________ yEaH..cAll..mE...tHe..wAndArA...
|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: Mo 21.04.03 18:00
Ingo hat folgendes geschrieben: | Hallo CitnAmor
Das Problem ist man kann damit auch Formularfelder ausfüllen, es gibt aber meines Wissens keine Möglichkeit Formularfelder zu füllen die geschützt sind (Dokumentenschutz).
|
doch das geht. mit dem Schutz selbst hat es nichts zu tun. Du kommst aber (meines Wissens) nicht an den Vorgabetext ran, daher nach 2xklicken auf den dokumentenschutz ist alles wieder weg.
mfg Frank
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|
Ingo
      
Beiträge: 19
|
Verfasst: Mo 21.04.03 19:04
Hallo
@Frank
Zitat: |
doch das geht. mit dem Schutz selbst hat es nichts zu tun. Du kommst aber (meines Wissens) nicht an den Vorgabetext ran, daher nach 2xklicken auf den dokumentenschutz ist alles wieder weg.
|
du hast recht. Ich habe mir das in Word eben noch mal angeschaut und ich kann über Formfields(Name).Result den Wert auch mit Dokumentenschutz füllen (vorhin habe ich das ganze mit Selct und insert über die Select gemacht das Funktionierte nicht)
Den Default Wer kann man über Formfields(name).textinput.Default lesen und setzen.
Zitat: | also es geht um ein seriendruck dokument, was mit excel verknüft ist und sich da aus einer datenbank die daten zieht... jetzt will ich aber auf excel und word verzichten. wie ich die daten aus einer excel datenbank bekomme weiß ich, jetzt wollte ich das dokument nehmen, die formelfelder löschen neu abspeichern und dann mit delphi ausfüllen...! |
Also man kann sowohl als auch Word über die Com-Komponenten oder die Oleautomatisierung steuern. Für beides muß aber die jeweilige Anwendung auf dem Zielrechner vorhanden sein. Und ob du die Com-Componenten oder die Oleautomatiesierung nimmt hängt davon ab ob du dir sicher bist sein kannst ob auf dem Zielrechner überall die selben Versionen von Word instaliert sind. Wenn das nicht de Fall ist ist Oleautomatisierung einfacher
Gruß Ingo
|
|
CitnAmor 
      
Beiträge: 19
|
Verfasst: Mo 21.04.03 19:33
jo das is no prob... auf allen rechnern is office xp installiert... also excel word...alles gleiche versionen... du sagst dass du bissel romprobiert hast, kannste evtl nen bsp als quellcode posten... ich habe von dem ole oder word zeugs keine ahung...thx..
_________________ yEaH..cAll..mE...tHe..wAndArA...
|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: Mo 21.04.03 20:32
@Ingo
Ingo hat folgendes geschrieben: | Hallo
Den Default Wer kann man über Formfields(name).textinput.Default lesen und setzen.
|
thx. manchmal ist es wie verhext. Hab ewig danach gesucht. Ich hatte mich vorhin nochmal richtig mit der VB-Hilfe befaßt und habs auch endlich gefunden, Textinput hatte ich mir nie richtig angeschaut. Aber du warst schneller
Frank
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: Mo 21.04.03 20:56
zurück zum eigentlichen thema
@CitnAmor
es gibt auch in der FAq Sparte lesenswertes
www.delphi-forum.de/viewtopic.php?t=7676
allerdings ohne die Server-kompos.
und www.delphi-forum.de/viewtopic.php?t=152
ansonsten schau dich auch mal auf [url] www.delphi-source.de[/url] um, da gibts auch was zum Thema.
Mir ist aber immer noch nicht ganz klar, was du eigentlich vorhast.
Zitat: |
jetzt will ich aber auf excel und word verzichten.
|
Zitat: |
jetzt wollte ich das dokument nehmen, die formelfelder löschen neu abspeichern und dann mit delphi ausfüllen...!
|
wie jetzt, auf was willst du nu verzichten? auf beide Apps? das wird wohl nicht funktionieren. Excel brauchst du nicht, Word kann auch wie schon gesagt mit textdateien als datenquelle arbeiten.
Auch brauchst du nicht unbedingt die daten mit delphi selber ausfüllen. Du kannst aber die Serienbrieffunktionen auch von delphi aus steuern und evtl auch noch "Ausgabe in neues Dokument" wählen und du hast ein normales Dok.
Ansonsten: Es ist immer hilfreich, mal in Word ein Makro aufzuzeichnen und zu guggn wie word das macht.
mfg Frank
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|
CitnAmor 
      
Beiträge: 19
|
Verfasst: Mo 21.04.03 21:03
also.. ich habe eine große artikel datenbank in excel, mit allen infos... jetzt habe ich mit delphi ein prog geschrieben dass nach der atrikelnr sucht und dann jeweils die angeforderten artikelinfos und photo und so ausgibt. jetzt muss ich noch so ein prüfplan ausdrucken. der wurde in word erstellt funktioniert mit seriendruck und zieht sich so die infos aus der datenbank. aber es soll allles in diesem programm integriert sein ohne dass ma jetzt in word rumklicken muss. man soll also nur die artikelnr eingeben und alle anderen felder soll der sich alleine ausfüllen. das klappt soweit nur halt net mit dem word teil...
_________________ yEaH..cAll..mE...tHe..wAndArA...
|
|
Ingo
      
Beiträge: 19
|
Verfasst: Mo 21.04.03 21:57
Hallo
@Frank
Zitat: |
thx. manchmal ist es wie verhext. Hab ewig danach gesucht. Ich hatte mich vorhin nochmal richtig mit der VB-Hilfe befaßt und habs auch endlich gefunden.
|
Dafür ist das Wordmodell auch zu komplex. Man kann nicht alle Funktionen kennen Ich habe mich auch schon mal im Access Modell totgesucht.
@CitnAmor
Wie Frank schon geschrieben hat gibt es viele Möglichkeiten das Problem zu lösen. Ich zeige hier im Beispiuel das einfache füllen von Formularfeldern. zu den genannten Dokumentationen die Frank genannt hat. empfehle ich dir auch noch die Word Hilfe mit der Beschreibung aller Objekte und Eigenschaften von Word.
Als Beispiel habe ich mal eine kleines Beispiel gemacht. Es besteht aus einem Button, einer WordApplication und einer WordDocument Komponente. Es setzt eine Docdatei mit einem Formualrfeld names NAchname und einem Formularfeld names Vorname vorraus. und das das Dokument geschützt ist.
Das Beispiel ist ohne Fehlerbehandlung und Optimierung. Es beendet am Ende auch nciht Word, speichert nicht usw.
Es tut nur folgendes: Öffnet Word, öffnet eine Datei.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, WordXP, OleServer, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; WordApplication1: TWordApplication; WordDocument1: TWordDocument; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var Filename: OleVariant; Feld: Olevariant; begin WordApplication1.Connect; {verbinden zu Word} WordApplication1.visible:= true; {Word anzeigen} Filename:= 'Z:\test.doc'; {Filename} WordApplication1.Documents.Open(Filename,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam, emptyparam,emptyparam,emptyparam, emptyparam,emptyparam); {Datei Öffnen} WordDocument1.ConnectTo(WordApplication1.ActiveDocument); {Dokument verbinden} Feld:= 'Nachname'; WordDocument1.FormFields.Item(Feld).Result:= 'Nachname'; {Formularfeld setzten} Feld:= 'Vorname'; WordDocument1.FormFields.Item(Feld).Result:= 'Vorname'; {Formularfeld setzten} end;
end. |
|
|
|