WORD VBA - Kopfzeilen Makro

Moderator: ModerationP

WORD VBA - Kopfzeilen Makro

Beitragvon wmf » 13. Jun 2014, 08:23

Liebe Wordnutzer,

ich habe den Auftrag bekommen Dokumentenvorlagen zu erstellen, die "Idiotensicher" sein sollten;)
Es geht darum, dass in den Dokumenten in der Kopfzeile der Dokumentenname eingetragen werden soll.
Dafür habe ich schon ein Makro zusammen gesucht, dass mich beim ersten Erstellen nach dem Dokumententitel mit der Form "xxxx-A" fragt --> also bspw. 0002-A. Wenn jetzt dieses Dokument neu revidiert werden soll, wird aus dem Dokument "0002-B".
Eigentlich sollte das ja einfach über die Kopfzeilenfunktion gehen, es kann aber auch Dokumente mit Abschnittswechseln geben, daher würde ich das gerne mit einem Makro lösen, damit durch eine Abfrage alle Kopfzeilen betroffen sind.
Ich hänge mal das bisherige Makro an.
Vielleicht hat ja jemand von euch eine Idee.

Vielen Dank!

wmf
Code: Alles auswählen
Public Sub ErsetzeKöpfe()
    Dim sec As Section
    Dim suche As String       
    Dim ersetze As String
       
    ersetze = InputBox("Wie lautet der Dokumententitel?")
    For Each sec In ActiveDocument.Sections
        KopfErsetzen sec.Headers(wdHeaderFooterFirstPage).Range, suche, ersetze
        KopfErsetzen sec.Headers(wdHeaderFooterEvenPages).Range, suche, ersetze
        KopfErsetzen sec.Headers(wdHeaderFooterPrimary).Range, suche, ersetze
    Next sec
End Sub

Private Sub KopfErsetzen(rng As Range, suche As String, ersetze As String)
    With rng.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Text = "xxxx-A"
        .Replacement.Text = ersetze
        .Replacement.Font.Bold = False
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
    End With
End Sub
wmf
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 12
Registriert: 12. Jun 2014, 11:11

Re: WORD VBA - Kopfzeilen Makro

Beitragvon Miss Marple » 13. Jun 2014, 08:32

Moin,

ich verstehe deine Frage nicht ganz. Klappt es nicht? Mit "For Each sec In ActiveDocument.Sections" klapperst du doch alle Abschnitte ab ...

Gruß
MM
Miss Marple
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1568
Registriert: 24. Jan 2014, 08:13
Wohnort: 52° 15' 53" N, 10° 31' 26" E

Re: WORD VBA - Kopfzeilen Makro

Beitragvon wmf » 13. Jun 2014, 08:58

Es geht darum, dass bei einer Revision des Dokumentes "0003-A" zu "0003-B" die Zahlen nich mehr angesprochen werden, da im Makro nur xxxx-A angesprochen wird. Würde das mit einer Schleife gehen? (Ich bin leider ziemlicher Neuling auf dem Gebiet der Programmierung)
Gruß,

wmf
wmf
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 12
Registriert: 12. Jun 2014, 11:11

Re: WORD VBA - Kopfzeilen Makro

Beitragvon Miss Marple » 13. Jun 2014, 09:51

Aaaahhhh :idea: :idea: :idea:

Zwei Änderungen:
änder deinen Such .Text = "xxx-A" in .Text = "[0-9]{4}-[A-Z]" und .MatchWildcards = False in .MatchWildcards = True

Dann klappt es gemäß deiner Vorgabe. Gesucht wird nach: "4 Zahlen, gefolgt von einem Bindestrich und dann einem Großbuchstaben".

Wenn nun aber durch die InputBox was anderes als Schema "4Zahlen-GroßBuchstabe" eingeben wird, wird wieder nix Vernünfiges gefunden. Was dann ?

Gruß
MM
Miss Marple
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1568
Registriert: 24. Jan 2014, 08:13
Wohnort: 52° 15' 53" N, 10° 31' 26" E

Re: WORD VBA - Kopfzeilen Makro

Beitragvon wmf » 13. Jun 2014, 11:25

Vielen Dank!

Das war genau die Antwort, die ich brauchte! :D
wmf
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 12
Registriert: 12. Jun 2014, 11:11


Zurück zu Word Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast