[VBA-Word] Text in Kopf einfügen

DoedGrv

Mitglied
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
 
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:
Code:
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.
 
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
 
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.
 
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
 
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:
Code:
 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!
 
Hey Doc, danke!

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

Werds gleich mal antesten!

Dank!

DoedGrv
 

Neue Beiträge

Zurück