Word: Mit VBA Bilder austauschen

Kürzlich hatte ich die Aufgabe, in der Kopfzeile eines Standardbriefbogens Logos für Zertifizierungen dynamisch auszutauschen. Na, das kann ja nicht so schwer sein, dachte ich mir. Wie sich herausstellte, ist doch einiges dabei zu beachten, so dass mir das Thema einen Blog-Beitrag wert erscheint. Hier also eine kleine Anleitung. Die Beispiellösung liegt zum Download bereit (Siehe weiter unten).

Screenshopt: Word-Kopfzeile mit Engel-Logo
Screenshopt: Word-Kopfzeile mit Engel-Logo
Screenshot: Word-Kopfzeile mit Teufel-Logo
Screenshot: Word-Kopfzeile mit Teufel-Logo

Voraussetzung für diese Lösung:

  • Damit es keine Verzerrungen gibt, haben die Bilder die gleichen Proportionen. In meinem Fall sind die beiden Bilder sogar exakt gleich groß.
  • Das erste Bild wird manuell über die Word-GUI mit Verknüpfung eingefügt. Nur so kann später die Eigenschaft SourceFullName im Programmcode angesprochen werden. Ihr dürft bei der Auswahl der Bilddatei also nicht nur Einfügen wählen, sondern Einfügen u. Verknüpfen. Diese Option hat gegenüber der Option Mit Datei verknüpfen den Vorteil, dass auch falls die so eingefügte Bilddatei später einmal nicht mehr zu finden ist, das Bild im Dokument trotzdem sichtbar bleibt. Es ist also embedded.
Einfügeoptionen für Bilder
  • Als Layout-Option für das Bild wurde "Quadrat" gewählt. Hier ist auch jede andere Option denkbar.
Layoutoption "Quadrat"
Layoutoption "Quadrat"

Lösung:

  • Das so eingefügte Bild ist ein Shape. Das Austauschen des Bildes ist allerdings nur für ein verknüpftes Inline-Shape möglich. Inline-Shapes entstehen, wenn man die Layoutoption Mit Text in Zeile wählt.
  • Das Shape muss also kurz in ein Inline-Shape umgewandelt werden. Danach wird die Eigenschaft SourceFullName geändert und das Inline-Shape wieder in ein Shape mit der entsprechenden Layoutoption zurück gewandelt.
  • Damit beim Umwandeln das Bild nicht durch die Gegend hopst, wird vorübergehend  die Bildschirmaktualisierung ausgeschaltet.

Code:

Download
Oben beschriebene Beispiellösung
Entpackt Euch die Zip-Datei. Die Bilder und das Word-Dokument müssen im selben Verzeichnis liegen.
GrafikAustauschen.zip
Komprimiertes Archiv im ZIP Format 262.5 KB

Viel Spaß mit dieser Lösung!

Kommentare: 4
  • #4

    Sabine Konschak (Mittwoch, 01 Juni 2022 16:21)

    Hallo Andreas,
    Zitat:
    "bei mir kommt leider immer ein Fehler, dass die Objektvariable nicht definiert ist... ich weiß leider nicht wie ich das beheben kann. Könnten Sie mir da helfen?"
    Antwort:
    Sehr gern schaue ich mir an, was da schief läuft. Melden Sie sich bitte bei mir. Die Kontaktmöglichkeiten finden Sie auf dieser Website.

  • #3

    Andreas (Mittwoch, 01 Juni 2022 13:39)

    Hallo,
    bei mir kommt leider immer ein Fehler, dass die Objektvariable nicht definiert ist... ich weiß leider nicht wie ich das beheben kann. Könnten Sie mir da helfen?

  • #2

    Sabine Konschak (Samstag, 29 Februar 2020 19:23)

    Hallo Netforward,
    mit dem Word-Befehl, Start-Markieren-Auswahlbereich, wird ein Panel auf der linken Seite des Word-Fensters geöffnet, in dem die Namen der Bilder und Objekte auf dem akiven Dokument angezeigt werden. Hier kann man die Namen auch anpassen. Ich hoffe, damit konnte ich Deine Frage beantworten.

  • #1

    Netforward (Donnerstag, 27 Februar 2020 15:30)

    Hallo, vielen Dank für diesen Lösungsvorschlag. Ich habe dazu noch eine Frage, die ich hier nicht beantwortet finde: Das Inline Shape hat in Ihrem Beispiel den Wert "Bild_1". Wie komme ich an diesen Wert bzw. wie/wo kann ich diesen Wert auslesen?