Felder in Word aktualisieren

Hallo zusammen,
hab wieder eine Frage.

Ich schreibe mit folgendem Code (der in Access 2010 steht) Text vom Textfeld aus Access in ein Textformularfeld in Word (2010)

If oApp.ActiveDocument.Bookmarks.Exists("Datum") Then
 oApp.ActiveDocument.FormFields("Datum").Result = Me!txtDatum
End If

Weiters habe ich im Worddokument Felder die auf diese Textformularfelder zugreifen. Man muss natürlich nachdem man den Text in die Textformularfelder geschrieben hat, alle Felder aktualisieren.
Ich habe Felder in folgenden Bereichen:
-Hauptbereich
-Kopfzeile
-Fußzeile
-Textfeld in Fußzeile

Darum folgender Code:

Sub Aktualisieren()
Dim rngDoc As Range
Dim oDoc As Document
Dim docSec As Section
Dim oHF As HeaderFooter
Dim shp As Shape
Set oDoc = ActiveDocument
For Each docSec In oDoc.Sections
 For Each oHF In docSec.Headers
 For Each shp In oHF.Shapes
 With shp.TextFrame
 If .HasText Then
 .TextRange.Fields.Update
 End If
 End With
 Next shp
 Next oHF
 For Each oHF In docSec.Footers
 For Each shp In oHF.Shapes
 With shp.TextFrame
 If .HasText Then
 .TextRange.Fields.Update
 End If
 End With
 Next shp
 Next oHF
 For Each rngDoc In oDoc.StoryRanges
 rngDoc.Fields.Update
 While Not (rngDoc.NextStoryRange Is Nothing)
 Set rngDoc = rngDoc.NextStoryRange
 rngDoc.Fields.Update
 Wend
 Next rngDoc
Next docSec
Set rngDoc = Nothing
Set oDoc = Nothing

End Sub

(Obriger Code funktioniet nur in einem Word-Modul)

Mit diesem Code werden alle Felder aktualisiert, also auch die Textformularfelder (dh.Es Steht dann wieder der Standardtext drinnen und nicht der Text den ich von Access übernommen habe).
Folgedessen steht dann in allen Feldern der Standardtext der Textformularfeldern drinnen.

Meine Frage:
Wie kann ich beim Aktualisierungsvorgang die Textformularfelder ausschließen?

In weiterer Folge möchte ich den zweiten Code später auch über das Access-VBA ausführen. Welche Änderungen muss ich dann vornehmen?

mfg MPunkt

Mit diesem Code werden alle Felder aktualisiert, also auch die
Textformularfelder (dh.Es Steht dann wieder der Standardtext
drinnen und nicht der Text den ich von Access übernommen
habe).
Folgedessen steht dann in allen Feldern der Standardtext der
Textformularfeldern drinnen.

Meine Frage:
Wie kann ich beim Aktualisierungsvorgang die
Textformularfelder ausschließen?

Hallo MPunkt,

lade mal bitte eine Kopie deiner Datei hoch mit fileupöoad o.ä., s. FAQ:2606

Gruß
Reinhard

Hallo,

ich habe hier die Worddatei hochgeladen die ich behandle. inkl. Makro.
http://www.file-upload.net/download-3922881/Test.doc…
Die Access-Datenbank kann ich leider nicht hochladen.

Ich wäre erstmals schon zufrieden wenn es mal rein in der Worddatei funktioniert.
Das Ummünzen auf Access ist dann der nächste Schritt.

lg MPunkt

Hallo Mpunkt,

inkl. Makro.
http://www.file-upload.net/download-3922881/Test.doc…
Die Access-Datenbank kann ich leider nicht hochladen.

die brauch ich *glaub* nicht. Du befüllst ja die Textfelder durch Access mit irgendwelchen texten. Das kann ich ja in Word auch tun per makro.
Mir ist nur deine Doc wichtig da ich in Word nicht fit bin und immer Angst habe wenn ich da so eine Doc „nachbaue“ daß ich da „falsche“ (Text-) Felder „erwische“ oder die im falschen Bereich positioniere, sodaß ggfs. mein Code den ich zu meiner Doc schreibe bei dir gar nicht läuft.

Ich wäre erstmals schon zufrieden wenn es mal rein in der
Worddatei funktioniert.

Ich schaue mal, muß jetzt weg, danach.

Das Ummünzen auf Access ist dann der nächste Schritt.

Das ist recht einfach, teilweise hast du es doch schon gelöst sonst würde ja dein Access-Code gar nix in Word befüllen können.
D,h, den Verweis auf Word wirste gesetzt haben.
Ein Word-Objekt mit createObject oder getobject geöffnet haben.

Google mal nach
createobject Word.Application
und
getobject Word.Application

Gruß
Reinhard

lg MPunkt

Hi,

in dem zuerst geposteten Code werden mit diesem einen Befehl immer alle Felder einer Dokumentuntereinheit aktualisiert. Wenn ich richtig verstanden habe, sollen aber immer nur REF-Felder aktualisiert werden.

Warum ersetzt man nicht diesen Befehl

rngDoc.Fields.Update

durch so etwas wie

Call RefFelderAktualisieren docSec
Sub RefFelderAktualisieren(docSec as Section)
Dim ff as FormField
 For Each ff in docSec
 if ff.Type = wdFieldRef Then ff.Update
 Next ff
End Sub

Achtung: dieser Code ist nur aus dem Gedächtnis geschrieben und ungetestet, weil ich zunächst nur eine Idee zur Verfügung stellen wollte.

HTH.

Markus
_______________
P.S.: Seit neuestem stellt der IE9 WIN7/64 in der Vorschau Text in den pre-Tags zweizeilig dar, auch wenn keine Leerabsätze eingegeben wurden. Ich hoffe, daß das nicht so ankommt. Ärger…