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

Mit VBA Bild direkt ansprechen

Forumthread: Mit VBA Bild direkt ansprechen

Mit VBA Bild direkt ansprechen
12.06.2018 16:29:57
Idence
Hallo,
besitzen Bilder in VBA eine eindeutige Zuordnung, sodass man sie z.B. per Code ein Bild aktiviert und seine Größe ändert, löscht...? Wenn ja, wie funktioniert dies, wenn nein, was kann man alternativ tun, um sein Ziel zu erreichen?
Danke sehr im voraus.
Gruß
Idence
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit VBA Bild direkt ansprechen
12.06.2018 16:39:32
Michael
Hallo!
besitzen Bilder in VBA eine eindeutige Zuordnung
Ja und nein. Bilder sind genauso Shapes, damit haben sie eine fortlaufende Nummer (den Shape-Index) mit dem Du durch alle laufen kannst. Außerdem haben Shapes auch jeweils einen Namen, der grds. automatisch vergeben wird ("Picture 1" bspw.). D.h. Du hast beim Einfügen entweder die Möglichkeit den jeweiligen Bildnamen eindeutig zu machen, um das Bild später genau anzusprechen, oder Du arbeitest mit den automatischen Namen und läufst die hochgezählten Nummern durch.
Manchmal bietet es sich auch an bspw. Original-Dateinamen in den AlternativeText des jeweiligen Shapes/Bildobjektes zu speichern - auch so kannst Du zB alle Bilder im Blatt durchlaufen und dann dasjenige mit dem passenden aT auswählen.
LG
Michael
Anzeige
AW: Mit VBA Bild direkt ansprechen
12.06.2018 16:45:10
Idence
Hallo Michael,
danke sehr für deine Antwort.
Die Möglichkeit den Namen des Bildes beim Einfügen zu bestimmen finde ich gut. Doch wie kann man dies tun?
Gruß
Idence
AW: Mit VBA Bild direkt ansprechen
12.06.2018 16:48:13
Michael
Hallo!
ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
gibt Dir immer das zuletzt eingefügte Shape/Bild. Dem kannst Du dann den ShapeName zuweisen, zB:

Set Pic = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
Pic.Name = "Lorem ipsum dolor sit amet"

Anzeige
AW: Mit VBA Bild direkt ansprechen
13.06.2018 11:19:16
Idence
Hallo Michael,
vielen Dank.
Ich habe auch eine andere Möglichkeit gefunden, den Bildnamen zu ändern.
Das Bild füge ich mit diesem Code ein:
ActiveSheet.Pictures.Insert(Pfad & ".jpg").Select
Und da es dabei schon selektiert ist, kann man seinen Namen ganz einfach mit
Selection.Name = "Lorem ipsum"
anpassen.
Und wenn ich mit diesem Bild später etwas anstellen möchte, kann ich es mit diesem Code machen:
Tabellexyz.Shapes.Range(Array("Lorem ipsum")).Delete
Danke, dass du mich auf die richtige Spur gebracht hast.
Gruß
Idence
Anzeige
AW: Gern, owT
13.06.2018 12:33:58
Michael
;
Anzeige
Anzeige

Infobox / Tutorial

Mit VBA Bilder in Excel direkt ansprechen


Schritt-für-Schritt-Anleitung

Um Bilder in Excel mit VBA direkt anzusprechen, kannst Du die folgenden Schritte befolgen:

  1. Bild Einfügen: Du kannst ein Bild in Dein Excel-Dokument einfügen, indem Du den entsprechenden Pfad angibst. Beispielsweise:

    ActiveSheet.Pictures.Insert("DeinPfad\DeinBild.jpg").Select
  2. Bildbenennung: Nachdem das Bild eingefügt wurde, kannst Du den Namen des Bildes festlegen. Dies ist wichtig, um später das Bild einfach ansprechen zu können. Nutze dazu den folgenden Code:

    Selection.Name = "MeinBild"
  3. Bilder ansprechen: Um das Bild nun zu bearbeiten, kannst Du es beispielsweise löschen oder die Größe ändern, indem Du den Namen verwendest:

    ActiveSheet.Shapes("MeinBild").Delete
  4. Alternative Methode: Du kannst auch die Shapes-Objekte verwenden, um auf Bilder zuzugreifen:

    Dim Pic As Shape
    Set Pic = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
    Pic.Name = "MeinBild"

Häufige Fehler und Lösungen

  • Bild nicht gefunden: Wenn Du versuchst, ein Bild mit einem Namen anzusprechen, und die Fehlermeldung "Shape nicht gefunden" erscheint, stelle sicher, dass das Bild korrekt benannt wurde und der Name genau übereinstimmt.

  • Shape-Index: Wenn Du Bilder über den Shape-Index ansprechen möchtest, beachte, dass die Forme eine fortlaufende Nummer haben. Der letzte hinzugefügte Shape hat beispielsweise den Index ActiveSheet.Shapes.Count.


Alternative Methoden

Eine alternative Methode, um alle Bilder in einem Arbeitsblatt auszuwählen oder zu markieren, ist die Verwendung von Schleifen. Du kannst alle Shapes durchlaufen und je nach Typ nur die Bilder auswählen:

Dim shp As Shape
For Each shp In ActiveSheet.Shapes
    If shp.Type = msoPicture Then
        ' Hier kannst Du den Code für die Bearbeitung einfügen
        shp.Select
    End If
Next shp

Diese Methode hilft Dir, alle Bilder in Excel auszuwählen und sie nach Bedarf zu bearbeiten.


Praktische Beispiele

  1. Größe eines Bildes ändern:

    Dim Pic As Shape
    Set Pic = ActiveSheet.Shapes("MeinBild")
    Pic.LockAspectRatio = msoFalse
    Pic.Width = 100
    Pic.Height = 100
  2. Alle Bilder markieren:

    Um alle Bilder in einem Arbeitsblatt zu markieren, kannst Du diesen Code verwenden:

    Dim shp As Shape
    For Each shp In ActiveSheet.Shapes
        If shp.Type = msoPicture Then
            shp.Select
        End If
    Next shp

Tipps für Profis

  • Bilder benennen: Achte darauf, dass Du beim Einfügen von Bildern immer einen eindeutigen Namen vergibst. Dies erleichtert das spätere Ansprechen und Bearbeiten der Bilder erheblich.

  • AlternativeText verwenden: Speichere den Original-Dateinamen im AlternativeText des Shapes. Damit kannst Du später gezielt Bilder anhand ihres Dateinamens ansprechen.

  • Excel alle Bilder auswählen: Um in größeren Projekten effizient mit vielen Bildern zu arbeiten, kann es nützlich sein, eine Funktion zu erstellen, die es Dir ermöglicht, alle Bilder auf einmal auszuwählen oder zu bearbeiten.


FAQ: Häufige Fragen

1. Wie kann ich ein Bild in Excel löschen?
Um ein Bild in Excel zu löschen, kannst Du den Namen des Bildes verwenden:

ActiveSheet.Shapes("MeinBild").Delete

2. Welche Excel-Version benötige ich für VBA?
VBA ist in den meisten Versionen von Excel verfügbar, einschließlich Excel 2010, 2013, 2016 und späteren Versionen. Stelle sicher, dass Du die Entwicklertools aktiviert hast, um VBA verwenden zu können.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige