Bilder ersetzen in Worddokumenten

  • Hallo zusammen,


    bisher habe ich es geschafft Word 2003 zu öffnen und Texte zu ersetzen. Siehe Code unten.

    Allerdings habe ich auch ca. 500 Worddokumente bei denen rechts oben im Dokument unser Logo als Bild hinterlegt ist. Nun hat sich das Logo geändert und das neue muss in das Dokument. Entweder ich öffne jetzt alle Worddokus und mache das manuell oder es gäbe eine Möglichkeit dieses Bild zu tauschen mit irgendeiner Funktion. Weiß da jemand was ? Wäre super klasse.


    #include <File.au3>
    #include <Word.au3>


    Global $FileString
    Dim $FilePath
    Dim $Verzeichnis
    Dim $aFiles
    Dim $oWord
    Dim $oDoc
    Dim $range
    Dim $oFind


    $Verzeichnis="C:\Word"
    $aFiles = _FileListToArray($Verzeichnis, "*.doc", 1)

    For $i = 1 To $aFiles[0]
    $FilePath = $Verzeichnis & "\" & $aFiles[$i]
    $oWord = ObjCreate("Word.Application")
    $oWord.Visible = True
    ; msgbox(64,"Wert von $j ", $FilePath)
    $oDoc = $oWord.Documents.Open($FilePath)
    $range = $oDoc.Range
    $oFind = $range.Find
    With $oFind
    .ClearFormatting()
    .Replacement.ClearFormatting()
    .Execute("blabla", 0, 0, 0, 0, 0, 1, 1, 0, "bleble", 1)
    EndWith
    $oDoc.Save()
    $oDoc.Close
    $oWord.Quit
    Next

  • Word 2003


    Habe bisher folgendes probiert.


    Das Ersetzen des Textes klappt ganz gut.

    Für das Bild habe ich in Word 2 Makros, d.h. es wird das Original geöffnet, dann wird Suchen & Ersetzen ausgeführt, danach das Dokument "Alles markieren" und in die Zwischenablage. Danach wird ein neues Worddokument geöffnet und der Inhalt der Zwischenablage (also mein Dokument) in das neue Dokument hineinkopiert. Das habe ich jetzt so gemacht weil mein Logo rechts oben im VBA immer einen anderen Namen hat (manchmal heisst es Picture11, dann wieder Picture12). Nach dem Kopieren in ein neues Dokument hat mein Log immer den Namen Picture3 und damit kann ich es über Wordmakros löschen lassen und das neue einfügen lassen. Keine Ahnung ob das zu kompliziert ist was ich hier mache.


    Mein problem ist aber immer noch folgendes:

    Ich bekomme das neue Dokument nicht unter dem alten Namen abgespeichert. Haut einfach nicht hin


    Hier mal der Code bisher: Wenn ich den ausführe bekomme ich auch immer folgenden Fehler


    --> Word.au3 Error from function _WordDocSaveAs, $_WordStatus_InvalidObjectType


  • Bestimmt weil das Dokument ja dann 2 mal existiert.
    Test.doc (Original)
    Test.doc (Bearbeit)

    Ich würde da mit FileRename einfach ne 1 hinter jeden Namen schreiben.
    Dann wennn alle erstezt sind, die originalen löschen.
    Und dann die 1 wieder entfernen ;)

  • Danke für die Hilfe. Ich denke ich habs.


    Das Original File wird vorher schon gelöscht, aber vielleicht hast du Recht sollte eigentlich erst einen Rename machen. Sicher ist Sicher.


    Der Fehler warum das Speichern nicht geklappt hat lag in der Syntax. Hier der Code, zumindest funzt das bei mir und mit den 2 Makros bei Word kann ich auch leben.