18. Oktober 2006 11:18
18. Oktober 2006 15:46
19. Oktober 2006 07:25
19. Oktober 2006 10:31
TemplateName := 'Dokument.dot';
IF ISCLEAR(WordApp) THEN
IF NOT CREATE(WordApp, FALSE) THEN
ERROR('Konnte keine Word-Instanz erstellen!');
IF NOT EXISTS(TemplateName) THEN
ERROR('Wordvorlage %1 existiert nicht!', TemplateName);
WordDoc := WordApp.Documents.Add(TemplateName);
WordRange := WordApp.ActiveDocument.Fields.Item(1).Result;
WordRange.Text := '1. Textfeld im Dokument füllen';
WordRange := WordApp.ActiveDocument.Fields.Item(2).Result;
WordRange.Text := '2. Textfeld im Dokument füllen';
WordApp.ScreenUpdating(TRUE);
WordApp.Visible := TRUE;
WordApp.Activate;
19. Oktober 2006 10:53
WDDoc := WDApp.Documents.AddOld(filename);
//WDRange := WDDoc.Bookmarks.Item(a).Range; // Auch Item(1), da die alte TextMarke durch Range.Text ersetzt wurde
//WDRange.Text('Eintrag Nr. 2!');
Textmarke := 'Anschrift';
IF Debitor."Sachbearbeiter Buchhaltung" <>'' THEN
Debitor.Kontaktperson := Debitor."Sachbearbeiter Buchhaltung";
AdrFormat.Debitor(DebAdr,Debitor);
WDDoc.Bookmarks.Item(Textmarke).Range.Text(DebAdr[1]+CRLF+DebAdr[2]+CRLF+DebAdr[3]+CRLF+DebAdr[4] +CRLF+DebAdr[5]+CRLF+DebAdr[6]+CRLF+DebAdr[7]+CRLF+DebAdr[8]);
Textmarke := 'Stichtag';
WDDoc.Bookmarks.Item(Textmarke).Range.Text(Stichtag);
Textmarke := 'Ansprechpartner';
WDDoc.Bookmarks.Item(Textmarke).Range.Text(Anrede);
Textmarke := 'StichKurz';
WDDoc.Bookmarks.Item(Textmarke).Range.Text(StichtagKurz);
IF Debitor.Bewegung > 0 THEN
Art := Lasten
ELSE
Art := Gunsten;
Textmarke := 'Art';
WDDoc.Bookmarks.Item(Textmarke).Range.Text(Art);
Textmarke := 'Saldo';
WDDoc.Bookmarks.Item(Textmarke).Range.Text(BalConCurr+' '+FORMAT(WährungSummenPuffer.Totalbetrag));
filename := AusgabePfad+'Debitor '+Debitor."Nr."+' '+BalConCurr+'.doc';
WDDoc.SaveAs2000(filename);
IF Drucken = TRUE THEN
WDDoc.PrintOut2000;
WDDoc.Close;
19. Oktober 2006 11:21
7. Mai 2007 14:02
7. Mai 2007 14:59
7. Mai 2007 15:18
7. Mai 2007 15:36
7. Mai 2007 16:09
7. Mai 2007 21:04
8. Mai 2007 08:56
3. Juli 2007 09:12
TomTom64 hat geschrieben:Bei mir sieht es so aus:
Dokument-Textmarken füllen und drucken
Name DataType Subtype Length
WDApp Automation Unknown Automation Server.Application
WDDoc Automation Unknown Automation Server.Document
WDRange Automation Unknown Automation Server.Range
WDTable Automation Unknown Automation Server.Table
WDBookmark Automation Unknown Automation Server.Bookmark
- Code:
WDDoc := WDApp.Documents.AddOld(filename);
//WDRange := WDDoc.Bookmarks.Item(a).Range; // Auch Item(1), da die alte TextMarke durch Range.Text ersetzt wurde
//WDRange.Text('Eintrag Nr. 2!');
Textmarke := 'Anschrift';
IF Debitor."Sachbearbeiter Buchhaltung" <>'' THEN
Debitor.Kontaktperson := Debitor."Sachbearbeiter Buchhaltung";
AdrFormat.Debitor(DebAdr,Debitor);
WDDoc.Bookmarks.Item(Textmarke).Range.Text(DebAdr[1]+CRLF+DebAdr[2]+CRLF+DebAdr[3]+CRLF+DebAdr[4] +CRLF+DebAdr[5]+CRLF+DebAdr[6]+CRLF+DebAdr[7]+CRLF+DebAdr[8]);
Textmarke := 'Stichtag';
WDDoc.Bookmarks.Item(Textmarke).Range.Text(Stichtag);
Textmarke := 'Ansprechpartner';
WDDoc.Bookmarks.Item(Textmarke).Range.Text(Anrede);
Textmarke := 'StichKurz';
WDDoc.Bookmarks.Item(Textmarke).Range.Text(StichtagKurz);
IF Debitor.Bewegung > 0 THEN
Art := Lasten
ELSE
Art := Gunsten;
Textmarke := 'Art';
WDDoc.Bookmarks.Item(Textmarke).Range.Text(Art);
Textmarke := 'Saldo';
WDDoc.Bookmarks.Item(Textmarke).Range.Text(BalConCurr+' '+FORMAT(WährungSummenPuffer.Totalbetrag));
filename := AusgabePfad+'Debitor '+Debitor."Nr."+' '+BalConCurr+'.doc';
WDDoc.SaveAs2000(filename);
IF Drucken = TRUE THEN
WDDoc.PrintOut2000;
WDDoc.Close;
3. August 2007 17:14
Marc Teuber hat geschrieben:Also ich habe das folgendermaßen gemacht:
- Code:
TemplateName := 'Dokument.dot';
IF ISCLEAR(WordApp) THEN
IF NOT CREATE(WordApp, FALSE) THEN
ERROR('Konnte keine Word-Instanz erstellen!');
IF NOT EXISTS(TemplateName) THEN
ERROR('Wordvorlage %1 existiert nicht!', TemplateName);
WordDoc := WordApp.Documents.Add(TemplateName);
WordRange := WordApp.ActiveDocument.Fields.Item(1).Result;
WordRange.Text := '1. Textfeld im Dokument füllen';
WordRange := WordApp.ActiveDocument.Fields.Item(2).Result;
WordRange.Text := '2. Textfeld im Dokument füllen';
WordApp.ScreenUpdating(TRUE);
WordApp.Visible := TRUE;
WordApp.Activate;
Die verwendeten Variablen (WordApp, WordDoc & WordRange) sind alle vom Type "Automation" und dann vom Subtype:
1. Microsoft Word 9.0 Object Library.Application
2. Microsoft Word 9.0 Object Library.Document
3. Microsoft Word 9.0 Object Library.Range
Gruß, Marc
2. September 2008 10:56
BlueInTheSky hat geschrieben:Hallo Marc,
hätte da noch ein paar Fragen zu Deinem Code. Also der Zweck ist ja Word aus NAV zu starten und dabei Daten mitzugeben. Wo übergibst Du denn in dem Code die Daten?
WordRange := WordApp.ActiveDocument.Fields.Item(1).Result;
WordRange.Text := '1. Textfeld im Dokument füllen';
BlueInTheSky hat geschrieben:Item(1) und Item(2) sind die Marker in Word? Wie legt man diese Marker in Word denn an?
2. September 2008 13:27