Bei Microsoft anmelden
Melden Sie sich an, oder erstellen Sie ein Konto.
Hallo,
Wählen Sie ein anderes Konto aus.
Sie haben mehrere Konten.
Wählen Sie das Konto aus, mit dem Sie sich anmelden möchten.

Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
286841 WD2002: Text Form Fields Are Not Retained During Mail Merge


Eine Microsoft Word 2000-Version dieses Artikels finden Sie unter 211308.

Wenn Sie in Microsoft Word ein Seriendruckdokument erstellen und dieses Dokument Formularfelder enthält, bleiben die Dropdown- und Kontrollkästchen-Formularfelder im Hauptdokument erhalten, die Text-Formularfelder erscheinen jedoch nicht im Seriendruckdokument.

Problembeschreibung

Das ist darauf zurückzuführen, dass Word die Verknüpfungen für Text-Formularfelder beim Seriendruck aufhebt. Bei Anzeige-Formularfeldern wie Dropdown- und Kontrollkästchen-Feldern werden die Verknüpfungen nicht aufgehoben.

Ursache

Die Verwendung der hier aufgeführten Informationen, Makro- oder Programmcodes geschieht auf eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionalität sowie ohne Anspruch auf Support zur Verfügung. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen.

Sie können dieses Problem mit folgenden Beispielmakros umgehen. Diese Beispielmakros führen die folgenden Schritte durch:

  1. Ersetzen der Text-Formularfelder im Seriendruck-Hauptdokument durch Platzhalter, wobei der Inhalt der Formularfelder erhalten bleibt.

  2. Seriendruck in ein neues Dokument.

  3. Ersetzen der Platzhalter durch Text-Formularfelder und Wiederherstellen des Inhaltes der Formularfelder.

  4. Wiederherstellen des ursprünglichen Inhaltes des Seriendruck-Hauptdokuments vor Ausführung des Makros.

WICHTIGER HINWEIS: Diese zwei Makros arbeiten zusammen und müssen im selben Microsoft Visual Basic für Applikationen-Projekt erstellt werden. Das erste Makro ruft das zweite Makro auf.

Makro 1


Verwenden Sie je nach Situation eines der folgenden Makrobeispiele.


Wenn Sie einen Seriendruck in ein neues Dokument durchführen möchten, verwenden Sie Beispiel 1. Wenn das Ergebnis des Seriendrucks an E-Mail-Empfänger gehen soll, verwenden Sie Beispiel 2.

Beispiel 1: Seriendruck in neues Dokument


Sub PreserveMailMergeFormFieldsNewDoc()

Dim fFieldText() As String
Dim iCount As Integer
Dim fField As FormField
Dim sWindowMain, sWindowMerge As String

On Error GoTo ErrHandler

' Fensternamen des Seriendruck-Hauptdokuments speichern.
sWindowMain = ActiveWindow.Caption

' Da das Dokument Formularfelder enthält,
' sollte es geschützt sein, Schutz aufheben.
If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect
End If

' Alle Text-Formularfelder im
' Seriendruck-Hauptdokument durchlaufen.
For Each aField In ActiveDocument.FormFields

' Wenn das Formularfeld ein Text-Formularfeld ist...
If aField.Type = wdFieldFormTextInput Then

' ReDim des Datenfeldes für den Textfeldinhalt.
ReDim Preserve fFieldText(1, iCount + 1)

' Feldinhalt und -namen in Datenfeld stellen.
fFieldText(0, iCount) = aField.Result
fFieldText(1, iCount) = aField.Name

' Formularfeld selektieren.
aField.Select

' Durch Platzhaltertext ersetzen.
Selection.TypeText "<" & fFieldText(1, iCount) & "Platzhalter>"

' icount erhöhen.
iCount = iCount + 1

End If

Next aField

' Seriendruck in neues Dokument durchführen.
ActiveDocument.MailMerge.Destination = wdSendToNewDocument
ActiveDocument.MailMerge.Execute

' Platzhalter suchen und durch Formularfelder ersetzen.
doFindReplace iCount, fField, fFieldText()

' Seriendruckdokument schützen.
ActiveDocument.Protect Password:="", NoReset:=True, _
Type:=WdAllowOnlyFormFields

' Namen des Ergebnisdokuments besorgen.
sWindowMerge = ActiveWindow.Caption

' Seriendruck-Hauptdokument reaktivieren.
Windows(sWindowMain).Activate

' Platzhalter suchen und durch Formularfelder ersetzen.
doFindReplace iCount, fField, fFieldText()

Schutz des Seriendruck-Hauptdokuments wiederherstellen.
ActiveDocument.Protect Password:="", NoReset:=True, _
Type:=WdAllowOnlyFormFields

' Zurück zum Seriendruckdokument.
Windows(sWindowMerge).Activate

ErrHandler:

End Sub

Beispiel 2: Seriendruckergebnis an E-Mail-Empfänger


Sub PreserveMailMergeFormFieldsEmail()

Dim fFieldText() As String
Dim iCount As Integer
Dim fField As FormField
Dim sWindowMain, sWindowMerge As String

On Error GoTo ErrHandler

' Fensternamen des Seriendruck-Hauptdokuments speichern.
sWindowMain = ActiveWindow.Caption

' Da das Dokument Formularfelder enthält,
' sollte es geschützt sein, Schutz aufheben.
If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect
End If

' Alle Text-Formularfelder im
' Seriendruck-Hauptdokument durchlaufen.
For Each afield In ActiveDocument.FormFields

' Wenn das Formularfeld ein Text-Formularfeld ist...
If afield.Type = wdFieldFormTextInput Then

' ReDim des Datenfeldes für den Textfeldinhalt.
ReDim Preserve fFieldText(1, iCount + 1)

' Feldinhalt und -namen in Datenfeld stellen.
fFieldText(0, iCount) = afield.Result
fFieldText(1, iCount) = afield.Name

' Formularfeld selektieren.
afield.Select

' Ergebnis einfügen
Selection.TypeText afield.Result

' icount erhöhen.
iCount = iCount + 1

End If

Next afield

' Seriendruckergebnis an E-Mail-Empfänger.
ActiveDocument.MailMerge.Destination = wdSendToEmail

' Wenn Sie "MailAsAttachment" (Nachricht als Anlage senden)
' auf "true" setzen,enthält das Dokument in der Anlage
' Werte aus dem Formularfeld.
ActiveDocument.MailMerge.MailAsAttachment = False

' "Testfeld" ist der Feldname der E-Mail-Adresse und muss
' evtl. geändert werden, je nach Feldnamen der Datenquelle
ActiveDocument.MailMerge.MailAddressFieldName = "testfield"
ActiveDocument.MailMerge.MailSubject = "New MM macro as attachment "
ActiveDocument.MailMerge.Execute


ErrHandler:

End Sub

Makro 2


Erstellen Sie als nächsten Schritt zur Umgehung des unter "Problembeschreibung" erläuterten Verhaltens auch das folgende Beispielmakro:

Sub doFindReplace(iCount As Integer, fField As FormField, _
fFieldText() As String)

' Zum Anfang des Dokuments.
Selection.HomeKey Unit:=wdStory

' Suche initialisieren.
Selection.Find.ClearFormatting

With Selection.Find
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False

' Anzahl Formularfelder durchlaufen.
For i = 0 To iCount

' Suche durchführen.
Do While .Execute (FindText:="<" & fFieldText(1, i) _
& "Platzhalter>") = True

' Platzhalter durch Formularfeld ersetzen.
Set fField = Selection.FormFields.Add _
(Range:=Selection.Range, Type:=wdFieldFormTextInput)

' Inhalt des Formularfeldes und Namen der Textmarke
' wiederherstellen.
fField.Result = fFieldText(0, i)
fField.Name = fFieldText(1, i)
Loop

' Zum Anfang des Dokuments für nächste Suche.
Selection.HomeKey Unit:=wdStory

Next
End With

End Sub

Abhilfe

So erstellen Sie ein Makro in Word und führen es aus:

  1. Starten Sie Word.

  2. Öffnen Sie die Vorlage oder das Dokument, in der bzw. dem Sie das Makro oder die Makros speichern möchten.

  3. Starten Sie den Visual Basic-Editor mit ALT+F11.

  4. Klicken Sie im Menü Einfügen auf Modul.

  5. Geben Sie den Makrocode im Modulblatt ein.

  6. Kehren Sie mit ALT+F11 zu Word zurück.

  7. Zeigen Sie im Menü Extras auf Makro und klicken Sie auf Makros.

  8. Klicken Sie in der Liste Makroname auf das gewünschte Makro und dann auf Ausführen.

Weitere Informationen



Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.

Benötigen Sie weitere Hilfe?

Möchten Sie weitere Optionen?

Erkunden Sie die Abonnementvorteile, durchsuchen Sie Trainingskurse, erfahren Sie, wie Sie Ihr Gerät schützen und vieles mehr.

In den Communities können Sie Fragen stellen und beantworten, Feedback geben und von Experten mit umfassendem Wissen hören.

War diese Information hilfreich?

Wie zufrieden sind Sie mit der Sprachqualität?
Was hat Ihre Erfahrung beeinflusst?
Wenn Sie auf "Absenden" klicken, wird Ihr Feedback zur Verbesserung von Produkten und Diensten von Microsoft verwendet. Ihr IT-Administrator kann diese Daten sammeln. Datenschutzbestimmungen.

Vielen Dank für Ihr Feedback!

×