.NET Zugriff auf Feldebene im Word

3. Dezember 2013 11:52

Hallo Zusammen,

ich versuche aus einem WordDokument Feldnamen in meine NAV DB einzulesen.

Früher war das mit Automations kein Problem, jetzt unter .NET schon :oops: :?:

Im Besonderen geht es mir um eine bestimmte Funktionalität:
Def.: WordApplication DotNet Microsoft.Office.Interop.Word.ApplicationClass.'Microsoft.Office.Interop.Word, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'
Aufruf:
WordApplication.ActiveDocument.Fields.Item(c).Result;

Bis zum Dokument Aufruf ist alles in Ordnung, sobald aber NAV versucht die Feldnamen nach NAV zurückzulesen kommt die Fehlermeldung:
'Item ist keine Eigenschaft'.

Ich vermute das es daran liegt, dass der mitzugebene Index (c) nicht erkannt wird.

Hat jemand hierfür schon einen Workaround? Bin leider nicht so der .NET Profi :shock:

MfG,
Mr.Nav

Re: .NET Zugriff auf Feldebene im Word

29. Dezember 2013 20:06

Hallo,
soweit ich weiss ist die "Result" eine Eigenschaft des Field-Objektes und nicht des Fields-Objekt. Siehe hier: http://msdn.microsoft.com/en-us/library/office/dn320643.aspx
Definiere die eine Variable "Fields" als Fieldscollection.
Definiere dir eine Variable "Field" und weise dieser Variable dann ein Item aus der Fieldscollection zu.
Arbeite dann mit der Variable Field weiter.

Etwa so:

Code:
IF MsWordApp.ActiveDocument.Fields.Count <= 0 THEN
  EXIT;
WordFields := MSWordApp.ActiveDocument.Fields;
For i := 1 to WordFields.Count DO BEGIN
  WordField := WordFields.Item(i);
  message(format(WordField.Result));
END;


Zusätzliche Variablen sind
    WordFields als Microsoft.Office.Interop.Word.Fields.'Microsoft.Office.Interop.Word, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'
    WordField als Microsoft.Office.Interop.Word.Field.'Microsoft.Office.Interop.Word, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'

Gruß Micha