Autor Beitrag
CitnAmor
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 129



BeitragVerfasst: 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 :roll:

_________________
Windows 200 Prof. - Debian Sarge
D5 Prof & D6 PE - Kylix 3 Professional - Free Pascal
Ingo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 19



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 19



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: 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 :wink: :wink:

Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 19



BeitragVerfasst: 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.

ausblenden volle Höhe Quelltext
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.