Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bild via VBA Befehl austauschen

Forumthread: Bild via VBA Befehl austauschen

Bild via VBA Befehl austauschen
02.10.2013 15:04:18
Andreas
Hallo Excel Freunde,
ich habe gestern Abend etwas mit Bildern und Excel experimentiert. Nach etwas Recherche konnte ich ein Bild über VBA einfügen: ActiveSheet.Pictures.Insert ("C:\User\TEMP\Temp_\space2.jpg")
Im Rahmen einer Schleife von Bildern würde ich dieses gern austauschen. Beim Rechtsklick auf das Bild heißt der 5. Punkt des Kontextmenüs auch „Bild ändern“. Dieser ruft einen FileOpen Dialog auf und das Bild wird sauber ausgetauscht. Aber der Makrorekorder hat keine Zeile aufgezeichnet. Ich suche also den Befehl, der sich hinter diesem Button verbirgt. Den FileOpen Dialog benötige ich nicht, da ich das neue Bild als String aus Pfad und Dateiname einspielen kann. Eine Internetrecherche hat keinen brauchbaren VBA Befehl zu Tage gefördert. Ich könnte das vorherige/ zu ersetzende Bild auch jedes Mal vor Import des neuen Bildes löschen. Aber das ist nicht sonderlich elegant und nur zweite Wahl.
Vielen Dank für Eure Aufmerksamkeit und einen Tip, welcher VBA Befehl es ist.
Beste Grüße, Andreas Hanisch

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bild via VBA Befehl austauschen
02.10.2013 15:18:31
Beverly
Hi Andreas,
ich würde es mit folgendem Makro (in einem allgemeinen Modul) lösen, welches du dem Bild zuweist:
Sub BildTausch()
With ActiveSheet.Shapes(Application.Caller)
ActiveSheet.Pictures.Insert ("D:\Test\1.JPG")  '
Eventuell musst du auch noch die Position des neuen Bildes anpassen.


Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Bilder in Excel via VBA austauschen


Schritt-für-Schritt-Anleitung

Um ein Bild in Excel via VBA auszutauschen, kannst du das folgende Makro verwenden:

  1. Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Erstelle ein neues Modul, indem du mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" klickst und auf "Einfügen" > "Modul" wählst.

  3. Füge den folgenden Code in das Modul ein:

    Sub BildTausch()
       With ActiveSheet.Shapes(Application.Caller)
           .Delete ' Löscht das vorherige Bild
           ActiveSheet.Pictures.Insert ("C:\User\TEMP\Temp_\space2.jpg") ' Füge das neue Bild hinzu
       End With
    End Sub
  4. Passe den Pfad zur Bilddatei an, die du einfügen möchtest.

  5. Weise dieses Makro einem Button oder einer Form in deinem Arbeitsblatt zu.


Häufige Fehler und Lösungen

Fehler: Das Bild wird nicht angezeigt.
Lösung: Stelle sicher, dass der Pfad zur Bilddatei korrekt ist und die Datei tatsächlich existiert.

Fehler: Das Makro läuft nicht.
Lösung: Überprüfe, ob die Makros in deinen Excel-Einstellungen aktiviert sind.

Fehler: Das vorherige Bild wird nicht gelöscht.
Lösung: Achte darauf, dass du das richtige Bild mit .Delete anvisierst. Der Code .Shapes(Application.Caller) verweist auf das Bild, das den Makroaufruf ausgelöst hat.


Alternative Methoden

Eine alternative Methode ist die Verwendung des OLEObjects, um Bilder einzufügen und zu ersetzen:

Sub OLEBildTausch()
    Dim pic As OLEObject
    Set pic = ActiveSheet.OLEObjects("Bild1") ' Namen des OLE-Objekts anpassen
    pic.Delete
    Set pic = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, _
        DisplayAsIcon:=False, Left:=10, Top:=10, Width:=100, Height:=100)
    pic.Object.Picture = LoadPicture("C:\User\TEMP\Temp_\space2.jpg")
End Sub

Diese Methode kann besonders nützlich sein, wenn du mehr Kontrolle über die Eigenschaften des Bildes benötigst.


Praktische Beispiele

Angenommen, du möchtest in einer Schleife mehrere Bilder austauschen. Hier ein einfacher Ansatz:

Sub MehrereBilderTauschen()
    Dim i As Integer
    Dim BildPfad As String

    For i = 1 To 5
        BildPfad = "C:\User\TEMP\Temp_\Bild" & i & ".jpg"
        With ActiveSheet.Shapes("Bild" & i) ' Namen der Bilder anpassen
            .Delete
            ActiveSheet.Pictures.Insert (BildPfad)
        End With
    Next i
End Sub

Damit kannst du mehrere Bilder in einer Schleife austauschen, was Zeit und Aufwand spart.


Tipps für Profis

  • Nutze Fehlerbehandlungsroutinen, um unerwartete Fehler beim Bildaustausch abzufangen.
  • Verwende Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind.
  • Experimentiere mit der Positionierung der Bilder, um sie nach dem Einfügen an die gewünschte Stelle zu verschieben.

FAQ: Häufige Fragen

1. Wie kann ich die Größe des neuen Bildes anpassen?
Du kannst die Eigenschaften .Width und .Height des Bildobjekts verwenden, um die Größe anzupassen, nachdem du es eingefügt hast.

2. Funktioniert das auch in Excel Online?
Leider kannst du VBA-Makros in Excel Online nicht verwenden. Dieses Tutorial bezieht sich auf die Desktop-Version von Excel.

3. Kann ich den Bildaustausch automatisieren?
Ja, du kannst das Makro so anpassen, dass es automatisch beim Öffnen der Datei oder durch einen bestimmten Trigger ausgeführt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige