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

Forumthread: Bilder zentriert und skaliert in Zellen Einfügen

Bilder zentriert und skaliert in Zellen Einfügen
26.01.2018 08:25:07
Thomas
Hallo!
Ich möchte Preisschilder für Produkte erzeugen. Alle Daten habe ich schon perfekt formatiert in unserem Online Shop. Die Daten habe ich aus der Datenbank in eine Excel - Tabelle kopiert. Nun möchte ich die Daten per sverweis in ein anderes Blatt zuweisen, welches ich als Preisschild gestaltet habe. In einem anderen Beitrag hatte ich schon Hilfe zu der formatierten Beschreibung bekommen.
Nun muss ich noch die Markenlogos und Artikelbilder einfügen, diese haben leider kein festes Format.
Das habe ich mir gestern aus Beispielen im Forum "gebastelt":
Sub importImage_in_3aufA4_multi()
Dim ws As Worksheet, rngTarget As Range, shp As Shape, myImage As Shape, strBildUrl As  _
String, bild As String
'Tabellenblatt festlegen
Set ws = ActiveSheet
' Bildname
bild = ActiveSheet.Range("D10").Value
bild1 = ActiveSheet.Range("E10").Value
' URL des Bildes
strBildUrl = "http://XXX/out/pictures/master/manufacturer/icon/" & bild
strBildUrl1 = "http://xxx/out/pictures/master/product/1/" & bild1
' Ziel-Range für das Bild
Set rngTarget = ws.Range("F17")
Set rngTarget1 = ws.Range("j17")
' Suche das Bild und lösche es falls vorhanden
For Each shp In ws.Shapes
If shp.AlternativeText = "myImageTag" Then
shp.Delete
End If
Next
For Each shp In ws.Shapes
If shp.AlternativeText = "myImageTag1" Then
shp.Delete
End If
Next
' Bild hinzufügen
Set myImage = ws.Shapes.AddPicture(strBildUrl, msoTrue, msoTrue, rngTarget.Left, rngTarget.  _
_
Top + 75, 100, -1)
Set myImage1 = ws.Shapes.AddPicture(strBildUrl1, msoTrue, msoTrue, rngTarget1.Left + 25,  _
rngTarget1.Top, 150, 150)
' #### Muster zum Bilder einfügen ### Set myImage1 = ws.Shapes.AddPicture(strBildUrl1, msoTrue,  _
_
msoTrue, rngTarget1.Left, rngTarget1.Top, rngTarget1.Width, rngTarget1.Height)'
' Bild zur wiedererkennung 'taggen'
myImage.AlternativeText = "myImageTag"
myImage1.AlternativeText = "myImageTag1"
End Sub
Aktuelles Problem:
1) wie bekomme ich die Bilder zentriert und mit einer maximalen Seitenlänge (längste Seitenlänge) von 150 skaliert in die jeweiligen Zellen (die Ausgangsbilder sind alle unterschiedlich, teilweise kleiner, teilweise größer ...)
2) Aktuell starte ich das als Makro, kann man das auch automatisch mit Änderung der Artikelnummer in Zelle A1 ausführen?
(3) wenn ich in meiner Bastelarbeit etwas unsauber / umständlich gemacht habe, dann nehme ich gerne Tipps an, wie der Code besser wäre ... :-)
Es wäre super, wenn mir jemand eine Lösung zu diesem Problem geben könnte!
DANKE!!!
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bilder zentriert & skaliert in Zellen einfügen
29.01.2018 22:22:31
Thomas
Hallo!
Leider hatte noch niemand Zeit gefunden eine Lösung meines Problems zu finden ...
In den letzten Tagen habe ich es selber versucht, bin aber leider an meinen (kaum vorhandenen) VBA Kenntnissen gescheitert... ich bekomme es einfach nicht hin :-(
Hat keiner einen Tipp wie ich die Bilder/Logos proportional verkleinert und zentriert in die Zellen bekomme?
Es wäre echt super, wenn sich jemand ein paar Minuten Zeit für mein Problem nehmen könnte. Und mir dann auch noch vielleicht einen Tipp geben könnte, wie ich VBA am Besten lernen könnte.
DANKE ! DANKE ! DANKE !
Gruß
Thomas
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Bilder zentriert und skaliert in Excel-Zellen einfügen


Schritt-für-Schritt-Anleitung

  1. Makro aktivieren: Öffne dein Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  2. VBA-Code einfügen: Kopiere den folgenden VBA-Code und füge ihn in das Modul ein:

    Sub importImage_in_3aufA4_multi()
        Dim ws As Worksheet, rngTarget As Range, shp As Shape, myImage As Shape, strBildUrl As String, bild As String
        'Tabellenblatt festlegen
        Set ws = ActiveSheet
        ' Bildname
        bild = ActiveSheet.Range("D10").Value
        ' URL des Bildes
        strBildUrl = "http://XXX/out/pictures/master/manufacturer/icon/" & bild
        ' Ziel-Range für das Bild
        Set rngTarget = ws.Range("F17")
        ' Suche das Bild und lösche es falls vorhanden
        For Each shp In ws.Shapes
            If shp.AlternativeText = "myImageTag" Then
                shp.Delete
            End If
        Next
        ' Bild hinzufügen
        Set myImage = ws.Shapes.AddPicture(strBildUrl, msoTrue, msoTrue, rngTarget.Left, rngTarget.Top, 150, 150)
        ' Bild zentrieren
        myImage.LockAspectRatio = msoTrue
        If myImage.Width > myImage.Height Then
            myImage.Width = 150
        Else
            myImage.Height = 150
        End If
        myImage.Top = rngTarget.Top + (rngTarget.Height - myImage.Height) / 2
        myImage.Left = rngTarget.Left + (rngTarget.Width - myImage.Width) / 2
        ' Bild zur Erkennung taggen
        myImage.AlternativeText = "myImageTag"
    End Sub
  3. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Du kannst das Makro über Entwicklertools > Makros ausführen.

  4. Automatisierung hinzufügen: Um das Bild automatisch bei Änderung der Artikelnummer in Zelle A1 zu aktualisieren, kannst du das folgende Ereignis verwenden:

    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(Target, Me.Range("A1")) Is Nothing Then
            Call importImage_in_3aufA4_multi
        End If
    End Sub

Häufige Fehler und Lösungen

  • Bild wird nicht angezeigt: Stelle sicher, dass die URL des Bildes korrekt ist. Überprüfe die Zellreferenzen und die Internetverbindung.

  • Bild wird nicht zentriert: Überprüfe, ob die Width und Height des Bildes korrekt gesetzt sind, um sicherzustellen, dass sie proportional skaliert werden.

  • Makro startet nicht: Vergewissere dich, dass Makros in deinen Excel-Einstellungen aktiviert sind.


Alternative Methoden

Falls Du kein VBA verwenden möchtest, kannst Du Bilder manuell in Zellen einfügen und sie dann mit der Maus zentrieren.

  1. Füge das Bild in die Zelle ein.
  2. Klicke mit der rechten Maustaste auf das Bild und wähle Größe und Eigenschaften.
  3. Aktiviere die Option Bewege und grösse mit Zelle.

Praktische Beispiele

  • Beispiel für einen Artikel: Wenn Du ein Logo für einen Artikel in Zelle F17 einfügen möchtest, stelle sicher, dass die URL korrekt ist und die Zelle groß genug ist, um das Bild aufzunehmen.

  • Zentrierte Bilder in einem Preisschild: Verwende den VBA-Code, um mehrere Bilder in verschiedenen Zellen zentriert und skaliert einzufügen.


Tipps für Profis

  • Lerne die Grundlagen von VBA, um deine Excel-Fähigkeiten zu verbessern. Es gibt viele Online-Ressourcen und Tutorials, die dir helfen können, effizienter mit Excel VBA zu arbeiten.

  • Experimentiere mit der LockAspectRatio-Eigenschaft in VBA, um das Bildverhältnis beim Skalieren beizubehalten.


FAQ: Häufige Fragen

1. Wie kann ich die Bildgröße anpassen?
Du kannst die Width und Height im VBA-Code anpassen, um die maximale Größe des Bildes festzulegen.

2. Funktioniert dies in Excel 2016?
Ja, der bereitgestellte VBA-Code funktioniert in Excel 2016 und späteren Versionen. Stelle sicher, dass Makros aktiviert sind.

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