# [VBA-Word] Text in Kopf einfügen



## DoedGrv (30. Oktober 2003)

Hai!

Ich hab in der Suche leider nix passiges gefunden... also .. here we go!

Ich habe mit dem VBA-Editor eine nette Userform zusammengeklickt. Da kann man seinen Namen, Alter, Nummern usw eintippen... die Prüfungen laufen auch alle super ab, kein Problem.

Nur, wie bekomme ich die Daten die jemand eingegeben hat in die Kopfzeile eines Word-Dokuments. 

Das dumme ist, ich mache das nach einer Vorgabe; also die Kopfzeile existiert shcon, und die zu füllenden Stellen sind bisher mit gelb hinterlegten 'x'-en markiert.

Wäre super, wenn mri da jemand weiterhelfen könnte, weil ich schon an der MS-Hilfe verzweifele!

Bin für J E D E N Hinweis dankbar.

Gruss, DoedGrv


----------



## Retlaw (30. Oktober 2003)

Ein Ansatz wäre den Makro-Editor zu starten und die gewünschten Schritte per Hand durchzuführen, also Kopfzeile bearbeiten, suchen nach "XXX", Ersetzen durch "Heinz", ...
Dann das aufgezeichnete Makro anpassen.
Da kommt dann sowas in der Art raus:

```
Sub Kopfzeile()
    If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
        ActiveWindow.Panes(2).Close
    End If
    If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
        ActivePane.View.Type = wdOutlineView Then
        ActiveWindow.ActivePane.View.Type = wdPrintView
    End If
    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "XXX"
        .Replacement.Text = "Heinz"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub
```
Anstelle von "Heinz" kannst du eine Variable mit dem Namen aus deinem Formular setzen.
Dieses Beispiel ersetzt alle Vorkommen von XXX durch Heinz, wenn du beim Aufzeichnen des Makros nur "Ersetzen" und nicht "Alle Ersetzen" anklickst werden nur die ersten XXX ersetzt, dann kannst du die Prozedur für alle weiteren Felder wiederholen.


----------



## DoedGrv (30. Oktober 2003)

Danke schon mal! Werde mir das gleich mal näher ansehen...

Aber gibts da nicht die Möglichkeit, irgendeine Stelle in der Kopfzeile zu benennen, und dann direkt über einen Namen anzusprechen um Text einzufügen o.ä.?

MfG DoedGrv


----------



## Retlaw (31. Oktober 2003)

Man kann in Word sog. Felder definieren, ich weiß aber nicht ob es damit möglich wäre.
Sonst könntest du ja Platzhalter setzen, z.B. #NAME#, #ANSCHRIFT#, ...
und dann nach diesen Strings suchen und durch entsprechende Werte ersetzen.


----------



## DoedGrv (31. Oktober 2003)

Ja, ich denke langsam auch, dass wäre ne Möglichkeit...

Bloss, das ganze VBA-Zeugs muss doch wohl sowas in der Art wie ich es suche bieten, .... kann doch nicht sein... obwohl,... beim Microshit weiss man nie...

Ich werds aber mal probrien... auch wenns durchs  ins Auge geacht ist... 

Dennoch schon mal danke !

Und falls sich wer anders grade drüber Kapuutlacht... mitteilen wie es besser geht! Bitte 

MfG DoedGrv


----------



## DrSoong (31. Oktober 2003)

Du brauchst keinen Platzhalter, eine *Textmarke* reicht völlig aus. Wenn du z.B. in der Kopfzeile die Textmarke _Kopfzeile_ hast, dann genügt der folgende Code, hinter ihr einen Text einzufügen:

```
ActiveDocument.Bookmarks("Kopfzeile").Select
 Selection.Text = "Das ist die Kopfzeile!"
```
Du kannst natürlich auch ein Feld einfügen und auf ein Formularfeld verweisen.


Der Doc!


----------



## DoedGrv (1. November 2003)

Hey Doc, danke! 

Das klingt, zumindest für mich beim lesen, stark nach dem, was ich suche!

Werds gleich mal antesten!

Dank!

DoedGrv


----------

