[gelöst] Microsoft Word 11.0 OL + TextFields + HeaderFooter

22. Mai 2006 12:49

Hallo liebe Mitstreiter :-)

ich versuche schon seit längerem gute Dokumentation zur MS Word 11.0 Object Library zu finden, da ich sie mit Automation in NAV 4.0 SP 1 einsetzen muss. - bin für jeden Vorschlag dankbar :-)

Hat es ausserdem jemand von euch geschafft ein Textfeld innerhalb eines Word Dokuments aus NAV heraus anzusprechen, z.B. dynamisch zu befüllen ?

(Leider funktioniert hier nur dieser Weg, Smarttags und die Erstellung "auf Office-Seite" kann ich leider nicht als Lösungsweg verwenden... :-( )

danke im vorhinein für eure Hilfe
cheers,
PM :-)
Zuletzt geändert von prassl am 26. Mai 2006 10:16, insgesamt 1-mal geändert.

22. Mai 2006 14:09

Hallo

Verstehe ich Deine Frage richtig?
Du willst ein Textfeld in einer Vorlage (*.dot) mit dem Namen ansprechen?

Gruss

22. Mai 2006 14:57

richtig :-)
zuerst muesste ich allerdings dahinter kommen, wie man Textfelder in Word benennt ... :-(

ausserdem befinden sich 2 meiner Textfelder innerhalb der Kopfzeile des Dokuments, welche ich (noch nicht) ansprechen kann...

lg
M.

22. Mai 2006 15:12

Aha.

Ich bin mir nicht sicher, ob wir das gleiche meinen.
- Word öffnen
- Datei -> Neu
- Einfügen -> Feld
- Dann die Schaltfläche Formeln anklicken
- Dann Formel =Kundenname (Beispiel)

Das Feld Kundenname kann man dann mit Automation aus Navision ansprechen und füllen.
Meinst Du das?

Gruss

22. Mai 2006 15:56

ah, ja - das wars. danke ! :-)
nun bleiben nur noch 2 Probleme:
1. wie spreche ich dieses Textfeld (namens Angebot) nun an ?
2. wie spreche ich ein Textfeld an, welches sich in der Kopfzeile des Dokumentes befindet ?

danke erstmals für die Hilfe
cheers, m.

22. Mai 2006 16:29

Aha.
Also zu 100%Prozent kann ich Dir nicht helfen, da ich nicht weiss wie man TextFelder in der Kopfzeile abfüllt. :cry:

Unter Financials habe ich das mal so gemacht:
Der Automation-Profi bin ich auch nicht, aber vielleicht hilfts.

Die Funktion FieldTransfer kann ich dann mit den Parametern Feldname, Feldinhalt aufrufen.
Achtung:
Der Feldinhalt muss mit Format in einen Text gecastet werden.

Code:
Function FieldTransfer(_FieldName : Text[30];_FieldValue : Text[50])
local Var:
WordFields 'Microsoft Word 11.0 Object Library'.Fields
WordField 'Microsoft Word 11.0 Object Library'.Field
WordRange2 'Microsoft Word 11.0 Object Library'.Range
i integer
ExistsFieldName Text 30
Total Integer

CLEAR(WordFields);

WordFields := WordApp.ActiveDocument.Fields;

IF ISCLEAR(WordFields) THEN
  EXIT;

Total := WordFields.Count;
FOR i := 1 TO Total DO BEGIN
  WordField := WordFields.Item(i);
  WordRange := WordField.Result;
  WordRange2 := WordField.Code;

  ExistsFieldName := UPPERCASE(WordRange2.Text);
  ExistsFieldName := DELCHR(ExistsFieldName, '<', ' ');
  ExistsFieldName := DELCHR(ExistsFieldName, '>', ' ');

  IF ExistsFieldName = UPPERCASE(_FieldName) THEN begin
    WordRange.Text := _FieldValue;
    exit;
  END;
END;

Gruss

Re: Microsoft Word 11.0 Object Library + Text Fields

22. Mai 2006 19:16

prassl hat geschrieben:[...]
ich versuche schon seit längerem gute Dokumentation zur MS Word 11.0 Object Library zu finden, da ich sie mit Automation in NAV 4.0 SP 1 einsetzen muss. - bin für jeden Vorschlag dankbar :-)
[...]

Hier ein weiterer Vorschlag, wo du die wohl umfangreichste Dokumentation finden wirst:
MSDN Home > MSDN Library > Office Solutions Development > Word 2003

23. Mai 2006 09:30

wunderbar, danke vielmals martinst und Timo !
die MSDN Developer Homepage habe ich natürlich dafür schon durchforstet - die Textfelder sind klar - vielen Dank für die Hilfe -

hier nun auch die Lösung für den Zugriff auf die Kopf- und Fußzeilen via Automation:

Code:
// Ansicht wechseln, zur Kopf/Fusszeilenansicht
Winword.ActiveWindow.ActivePane.View.Seekview := 9;
Selection.TypeText('This is some Header Text');
// und zur Hauptansicht des Dokuments zurückkehren
Winword.ActiveWindow.ActivePane.View.Seekview := 0;


0 and 9 sind die internen Werte der Variablen "wdSeekCurrentPageHeader" and "wdSeekPrintview", auf diese kann aus NAV heraus nicht zugegriffen werden, sie direkt über Ihren Wert anzusprechen funktioniert jedoch.

cheers, m.