Word 2010 - Text in Fusszeile ändern

  • VBScript

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von der_Kurt.

    Word 2010 - Text in Fusszeile ändern

    Hallo,

    ich habe ein VBA-Makro, das zuverlässig den Text der Fusszeile im aktuell geöffneten Word-Dokument ändert. Ich möchte das ganze jetzt in VBS umsetzen, sodass die Fußzeilen aller Dokumente in einem angegebenen Ordner durchlaufen und geändert werden, ist das überhaupt machbar ohne die Dokumente händisch zu öffnen? Die Fusszeilen in allen 200 *docx-Dokumenten sind identisch.

    Mein Code sieht bisher so aus:

    Visual Basic-Quellcode

    1. Sub ErsetzeFusszeile()
    2. Dim suche As String
    3. Dim Ersetze As String
    4. Dim rng As Range
    5. suche = InputBox("Was soll in der Fußzeile gesucht werden?")
    6. Ersetze = InputBox("Wie lautet der Ersetzungstext?")
    7. Set rng = ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range
    8. rng.Find.ClearFormatting
    9. rng.Find.Replacement.ClearFormatting
    10. With rng.Find
    11. .Text = suche
    12. .Replacement.Text = Ersetze
    13. .Forward = True
    14. .Wrap = wdFindContinue
    15. .Format = False
    16. .MatchCase = False
    17. .MatchWholeWord = False
    18. .MatchWildcards = False
    19. .MatchSoundsLike = False
    20. .MatchAllWordForms = False
    21. End With
    22. rng.Find.Execute Replace:=wdReplaceAll
    23. End Sub

    Danke Euch schon mal im Voraus! :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „wurstsemmerl“ ()

    Ich hab bis jetzt das hier gemacht, der Aufruf der Sub funktioniert aber leider nicht. Ich erhalte die Fehlermeldung "Falsche Anzahl an Argumenten oder ungültige Eigenschaftszuweisung" in Zeile 35.
    Könnest Du bitte prüfen ob der Code sauber ist und wie der korrekte Aufruf lauten muss? Danke schon mal. :rolleyes:

    Quellcode

    1. Sub BearbeiteFusszeile()
    2. Set FS = CreateObject("Scripting.FileSystemObject")
    3. Set Word = CreateObject("Word.Application")
    4. Set Folder = FS.GetFolder(FolderName)
    5. For i = 1 to Copies
    6. For Each File in Folder.Files
    7. If Right(File.Name,5) = ".docx" Then
    8. Set Doc = Word.Documents.Open(File.Path, False, True)
    9. Set rng = ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range
    10. rng.Find.ClearFormatting
    11. rng.Find.Replacement.ClearFormatting
    12. With rng.Find
    13. .Text = Suche
    14. .Replacement.Text = Ersetze
    15. .Forward = True
    16. .Wrap = wdFindContinue
    17. .Format = False
    18. .MatchCase = False
    19. .MatchWholeWord = False
    20. .MatchWildcards = False
    21. .MatchSoundsLike = False
    22. .MatchAllWordForms = False
    23. End With
    24. rng.Find.Execute Replace(wdReplaceAll)
    25. Doc.Close(wdSaveChanges)
    26. End If
    27. Next
    28. Next
    29. Word.Quit
    30. End Sub
    31. Range = rng
    32. Suche = InputBox("Was soll in der Fußzeile gesucht werden?")
    33. Ersetze = InputBox("Wie lautet der Ersetzungstext?")
    34. BearbeiteFusszeile "C:\Users\Willy\Desktop\testordner\"

    wurstsemmerl schrieb:

    Sub BearbeiteFusszeile()
    ...
    BearbeiteFusszeile "C:\Users\Willy\Desktop\testordner\"
    Fällt dir auf, dass die Sub gar keinen Parameter definiert hat?

    Entweder du deklarierst Ersetze global (also ausserhalb der Sub) oder du übergibst das per Parameter an die Sub.
    Auch Foldername fehlt als Parameter.

    Da du anscheinend keine Ahnung hast, wie sich so ein Programm verhält, solltest du dringend mit Hilfe eines Debuggers den Programmablauf verfolgen und dir den Inhalt deiner Variablen anschauen..

    z.B. VbsEdit
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    petaod schrieb:

    Da du anscheinend keine Ahnung hast, wie sich so ein Programm verhält, solltest du dringend mit Hilfe eines Debuggers den Programmablauf verfolgen und dir den Inhalt deiner Variablen anschauen..
    Hallo, danke für deine Antwort, ich habe nicht geschrieben dass ich Ahnung von VBA, VBS oder solchen Abläufen hätte. Wenn es mich überkommt, versuche ich eben manchmal eine Idee umzusetzen, dazu wird dann bestehender Code abgeändert bzw. zusammengeschnipselt soweit es mein bescheidener Kenntnisstand zu wissen glaubt. Ich denke aber nicht, dass ich zuviel Energie bezüglich Parameter, Variable & Co investieren möchte, da ich neben meinem Beruf dazu die Zeit nicht zur Verfügung habe und auch mein Bedarf an Scripten eher gering ist. Manchmal finde ich diese kleinen Helferlein nur ganz nützlich im Alltag und setze wenns in meinem Code happert eher auf die erfahrenen Gurus im Forum.

    Danke für deinen Tip mit dem Debugger, aber zur Lösung führt mich das leider nicht 8|.

    wurstsemmerl schrieb:

    Danke für deinen Tip mit dem Debugger, aber zur Lösung führt mich das leider nicht
    Wahrscheinlich hast du recht.
    Ein Werkzeug bringt erst dann was, wenn man sich vorstellen kann, was man damit erreichen kann.
    Was nützt ein Schraubendreher, wenn man nicht weiß, was man mit einer Schraube anfangen soll?

    Zur Lösung würde führen, wenn du dich mit den ganz fundamentalen Grundlagen des Programmierens beschäftigst.
    Der Aufruf eines Unterprogramms ist so ziemlich einer der ersten Schritte, den man heute schon in den ersten Schulstunden des Informatik-Unterrichts beigebracht bekommt.

    Ich denke aber nicht, dass ich zuviel Energie bezüglich Parameter, Variable & Co investieren möchte
    ...
    und setze wenns in meinem Code happert eher auf die erfahrenen Gurus im Forum
    Auch gut.
    Bedenke aber, dass Gurus eher ihren Spaß darin suchen, knifflige Probleme zu lösen.
    Aber vielleicht ist ja einer drunter, der dir aus Mitleid den Code Guttenberg-tauglich aufbereitet.
    Viel Erfolg!
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Der Aufruf eines Unterprogramms ist so ziemlich einer der ersten Schritte, den man heute schon in den ersten Schulstunden des Informatik-Unterrichts beigebracht bekommt.
    Tja, wäre ich nur nicht Bäcker geworden ;).
    Aber vielleicht ist ja einer drunter, der dir aus Mitleid den Code Guttenberg-tauglich aufbereitet.
    Vielen Dank für obiges Statement und viel Spass weiterhin mit den spannenden Kniffelcodes :).