Word Kopfzeile per Excel VBA ändern

...komplette Frage anzeigen

1 Antwort

Eine Idee: <Set oHeader = wddoc.Sections(1).Headers(wdHeaderFooterPrimary) oHeader.Range.Text = "Hier dein Ersatztext"> Dass pro Abschnitt bis zu drei Kopfzeilen möglich sind, weißt du sicher.

Set oHeader = wddoc.Sections(1).Headers(wdHeaderFooterPrimary)
oHeader.Range.Text = "Hier dein Ersatztext"
0
@HermannL

Ich habe mal den Abschnitt ein wenig angepasst, hier meine aktuelle Variante:

Set oHeader = wddoc.Sections(1).Headers(wdHeaderFooterPrimary)

    With oHeader.Range
        .Find.Text = "clientdocno"
        .Replacement.Text = clientdoc
        .Forward = True
        .Wrap = wdFindContinue
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

Die Variante läuft bis " .Replacement.Text = clientdoc" da kommt die Meldung das dieses Objekt diese Funktion nicht unterstützt.

0
@Bielefelderin

Du kannst den "Find and Replace"-Teil weglassen und brauchst nur mit oHeader.Range.Text = clientdoc

den Text der Kopfzeile zu tauschen. Dabei wird automatisch der alte Text überschrieben.

0
@HermannL

Das hab ich jetzt mal ausprobiert, das funzt soweit. Nur mit einem "Schönheitsfehler". Dann wird die komplette vorhandene Kopfzeile gegen den Variableninhalt getauscht. Es muss allerdings im Kopf das Schlüsselwort gefunden und gegen den Inahlt der Variable ersetzt werden. Wir sind aber auf dem richtigen Weg. Der Seitenkopf besteht aus einer Tabelle mit ca. 20 Feldern, wobei 4 Werte ausgetauscht werden sollen. In der Vorlagendatei habe ich dazu die Schlüsselworte wie z.b. "clientdocno" eingetragen um leicht danach suchen zu können.

Set oHeader = wddoc.Sections(1).Headers(2)
'oHeader.Range.Text = clientdoc
 oHeader.Range.Select
    With Selection.Find
        .Text = "clientdocno"
        .Replacement.Text = clientdoc
        .Wrap = wdFindContinue
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

Hier kommt ab "With selection.Find" der Abbruch. Leider ohne qualifizierte Fehlermeldung. In Word, sieht man während der einzelschrittausführung, das bei "oHeader.Range.Select" der richtige Bereich Seitenkopfes markiert wird.

0
@Bielefelderin

Es funzt jetzt komplett, manchmal sieht man den Wald vor lauter Bäumen nicht. Hier mal die Lösung, für alle die es interessiert:

Set oheader = wddoc.Sections(1).Headers(2)

     With oheader.Range.Find
        .Text = "clientdocno"
        .Replacement.Text = clientdoc
        .Wrap = wdFindContinue
        .Execute Replace:=wdReplaceAll
    End With

Herzlichen Dank.

0

Was möchtest Du wissen?