Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Bild per Makro einfügen

Bild per Makro einfügen
Nico
Hallo zusammen!
Ich habe ein Problem, das mich zur Verzweiflung treibt und ihr könnt mir da bestimmt helfen:
Ich habe ich Excel 2003 ein Makro geschrieben, mit dem ich in Excel per Knopfdruck ein Bild in die Zelle B7 einfügen kann. Das hat super funktioniert. Jetzt möchte ich genau das selbe Makro in Excel 2007 verwenden und es funktioniert nur noch teilweise. Es fügt mir zwar das Bild ein, jedoch nicht mehr in Zelle B7.
Kann mir irgendjemand sagen, was ich am Code ändern muss, damit er das verdammte Ding wieder richtig platziert?
Hier der Code:
Sub Bilder_einfügen()
Dim Object_ID As String
Dim Pfad_Datei As String
Dim Pfad_Bild As String
Dim Maxi As Integer
'Objektphoto_1
Sheets("Template").Range("B7").Select
Pfad_Datei = ActiveWorkbook.Path
Pfad_Bild = C:\Bilder\1.jpg"
Selection.ShapeRange.LockAspectRatio = msoTrue
Selection.ShapeRange.Height = 327.75
Selection.ShapeRange.Width = 435.75
Selection.ShapeRange.Rotation = 0#
Selection.ShapeRange.LockAspectRatio = msoTrue
Selection.ShapeRange.Height = 140#
Selection.ShapeRange.Width = 186.17
Selection.ShapeRange.Rotation = 0#
Selection.ShapeRange.Fill.Visible = msoFalse
Selection.ShapeRange.Fill.Solid
Selection.ShapeRange.Fill.Transparency = 0#
Selection.ShapeRange.Line.Weight = 0.75
Selection.ShapeRange.Line.DashStyle = msoLineSolid
Selection.ShapeRange.Line.Style = msoLineSingle
Selection.ShapeRange.Line.Transparency = 0#
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.ForeColor.SchemeColor = 64
Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
Sheets("Template").Range("Q1").Select
Danke schonmal im Voraus & beste Grüße,
Nico
Anzeige
AW: Bild per Makro einfügen
27.07.2010 12:08:24
Tino
Hallo,
versuch mal so.
Sub Bilder_einfügen()
Dim Pfad_Bild As String, rngPicCell As Range

'Pfad zum Bild 
Pfad_Bild = "C:\Bilder\1.jpg"

'Tabelle anpassen 
With Sheets("Template")
    'Zelle anpassen 
    Set rngPicCell = .Range("B7")
    'Bild in Excel laden und Formatieren 
    With .Pictures.Insert(Pfad_Bild)
        .ShapeRange.LockAspectRatio = msoTrue
        .ShapeRange.LockAspectRatio = msoTrue
        .ShapeRange.Height = 140#
        .ShapeRange.Width = 186.17
        .ShapeRange.Rotation = 0#
        .ShapeRange.Fill.Visible = msoFalse
        .ShapeRange.Fill.Solid
        .ShapeRange.Line.Weight = 0.75
        .ShapeRange.Line.DashStyle = msoLineSolid
        .ShapeRange.Line.Style = msoLineSingle
        .ShapeRange.Line.Visible = msoTrue
        .ShapeRange.Line.ForeColor.SchemeColor = 64
        .ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
        .Top = rngPicCell.Top
        .Left = rngPicCell.Left
    End With

End With
End Sub
Gruß Tino
Anzeige
Rahmen mit berücksichtigen...
27.07.2010 12:17:47
Tino
Hallo,
wenn der Rahmen auch berücksichtigt werden soll, müssen wir dies noch dazu addieren.
Sub Bilder_einfügen()
Dim Pfad_Bild As String, rngPicCell As Range

'Pfad zum Bild 
Pfad_Bild = "C:\Bilder\1.jpg"

'Tabelle anpassen 
With Sheets("Template")
    'Zelle anpassen 
    Set rngPicCell = .Range("B7")
    'Bild in Excel laden und Formatieren 
    With .Pictures.Insert(Pfad_Bild)
        .ShapeRange.Height = 140#
        .ShapeRange.Width = 186.17
        .ShapeRange.Fill.Solid
        .ShapeRange.Line.Weight = 0.75
        .ShapeRange.Line.DashStyle = msoLineSolid
        .ShapeRange.Line.Style = msoLineSingle
        .ShapeRange.Line.Visible = msoTrue
        .ShapeRange.Line.ForeColor.SchemeColor = 64
        .ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
        .Top = rngPicCell.Top + .ShapeRange.Line.Weight
        .Left = rngPicCell.Left + .ShapeRange.Line.Weight
    End With

End With
End Sub
Gruß Tino
Anzeige
AW: Rahmen mit berücksichtigen...
27.07.2010 14:45:55
Nico
Hi Tino!
Super - danke vielmals!
Funktioniert prima!
Grüße,
Nico
änderung Tino: Rahmen mit berücksichtigen...
29.07.2010 12:32:23
Karel
Hallo Forum,
Greife mal diese Tread auf
1. Mochte gerne Bilder einfügen über ganze Tabellebereich mit doppelklick und dialog geht auf
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.Dialogs(xlDialogInsertPicture).Show
2. und wenn möglichh .ShapeRange.Line.ForeColor.SchemeColor = 64 über  eingabe wert  im  _
zelle a1 ansteuern.
Code von Tino
Sub Bilder_einfügen()
Dim Pfad_Bild As String, rngPicCell As Range
'Pfad zum Bild
Pfad_Bild = "C:\Bilder\1.jpg"
'Tabelle anpassen
With Sheets("Template")
'Zelle anpassen
Set rngPicCell = .Range("B7")
'Bild in Excel laden und Formatieren
With .Pictures.Insert(Pfad_Bild)
.ShapeRange.LockAspectRatio = msoTrue
.ShapeRange.LockAspectRatio = msoTrue
.ShapeRange.Height = 140#
.ShapeRange.Width = 186.17
.ShapeRange.Rotation = 0#
.ShapeRange.Fill.Visible = msoFalse
.ShapeRange.Fill.Solid
.ShapeRange.Line.Weight = 0.75
.ShapeRange.Line.DashStyle = msoLineSolid
.ShapeRange.Line.Style = msoLineSingle
.ShapeRange.Line.Visible = msoTrue
.ShapeRange.Line.ForeColor.SchemeColor = 64
.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
.Top = rngPicCell.Top
.Left = rngPicCell.Left
End With
End With
End Sub
Grüße
Karel
Anzeige
meinst Du so?
29.07.2010 12:57:03
Tino
Hallo,
habe Deine Frage so verstanden.
kommt als Code in die Tabelle
Option Explicit 
 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
Dim sZiel$ 
Cancel = True 
sZiel = Application.GetOpenFilename("Bilder (*.jpg;*.gif;*.bmp),*.jpg;*.gif;*.bmp") 
If sZiel <> CStr(False) Then 
    If IsNumeric(Range("A1").Value) Then 
        Load_Picture Target, Range("A1").Value, sZiel 
    Else 
        MsgBox "In A1 steht keine Zahl!", vbExclamation 
    End If 
End If 
End Sub 
 
kommt als Code in ein Modul
Option Explicit 
 
Sub Load_Picture(rngPicCell As Range, lngSchemeColor As Long, Pfad_Bild$) 
'Tabelle anpassen 
With Sheets(rngPicCell.Parent.Name) 
    'Zelle anpassen 
 
    'Bild in Excel laden und Formatieren 
    With .Pictures.Insert(Pfad_Bild) 
        .ShapeRange.LockAspectRatio = msoTrue 
        .ShapeRange.LockAspectRatio = msoTrue 
        .ShapeRange.Height = 140# 
        .ShapeRange.Width = 186.17 
        .ShapeRange.Rotation = 0# 
        .ShapeRange.Fill.Visible = msoFalse 
        .ShapeRange.Fill.Solid 
        .ShapeRange.Line.Weight = 0.75 
        .ShapeRange.Line.DashStyle = msoLineSolid 
        .ShapeRange.Line.Style = msoLineSingle 
        .ShapeRange.Line.Visible = msoTrue 
        .ShapeRange.Line.ForeColor.SchemeColor = lngSchemeColor 
        .ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255) 
        .Top = rngPicCell.Top + .ShapeRange.Line.Weight 
        .Left = rngPicCell.Left + .ShapeRange.Line.Weight 
    End With 
 
End With 
End Sub 
Gruß Tino
Anzeige
änderung Tino: Rahmen mit berücksichtigen...
29.07.2010 12:35:38
Karel
Hallo Forum,
Nochmal aber jetzt komplett
Greife mal diese Tread auf
1. Mochte gerne Bilder einfügen über ganze Tabellebereich mit doppelklick und dialog geht auf
"

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)"
"Application.Dialogs(xlDialogInsertPicture).Show"
2. und wenn möglichh .ShapeRange.Line.ForeColor.SchemeColor = 64 über  eingabe wert  im  _
zelle a1 ansteuern.
Code von Tino
Sub Bilder_einfügen()
Dim Pfad_Bild As String, rngPicCell As Range
'Pfad zum Bild
Pfad_Bild = "C:\Bilder\1.jpg"
'Tabelle anpassen
With Sheets("Template")
'Zelle anpassen
Set rngPicCell = .Range("B7")
'Bild in Excel laden und Formatieren
With .Pictures.Insert(Pfad_Bild)
.ShapeRange.LockAspectRatio = msoTrue
.ShapeRange.LockAspectRatio = msoTrue
.ShapeRange.Height = 140#
.ShapeRange.Width = 186.17
.ShapeRange.Rotation = 0#
.ShapeRange.Fill.Visible = msoFalse
.ShapeRange.Fill.Solid
.ShapeRange.Line.Weight = 0.75
.ShapeRange.Line.DashStyle = msoLineSolid
.ShapeRange.Line.Style = msoLineSingle
.ShapeRange.Line.Visible = msoTrue
.ShapeRange.Line.ForeColor.SchemeColor = 64
.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
.Top = rngPicCell.Top
.Left = rngPicCell.Left
End With
End With
End Sub
Grüße
Karel
Anzeige
AW: Antwort siehe hier ...
29.07.2010 14:14:56
Karel
Hallo Tino,
Richtig verstanden, genau so hatte ich mir dass vorgestellt danke, aber habe noch ein letzte änderungswunsch.
wert Shape Line in Zelle B1 variabel
.ShapeRange.Line.Weight = 0.75
wenn dass noch möglich ist!!
Grüsse
Karel
Anzeige
müsste so funktionieren...
29.07.2010 14:41:45
Tino
Hallo,
kommt als Code in die Tabelle
Option Explicit 
 
  
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
Dim sZiel$ 
Cancel = True 
sZiel = Application.GetOpenFilename("Bilder (*.jpg;*.gif;*.bmp),*.jpg;*.gif;*.bmp") 
If sZiel <> CStr(False) Then 
    If IsNumeric(Range("A1").Value) And IsNumeric(Range("B1").Value) Then 
        Load_Picture Target, Range("A1").Value, Range("B1").Value, sZiel 
    Else 
        MsgBox "In A1 oder B1 steht keine Zahl!", vbExclamation 
    End If 
End If 
End Sub 
 
kommt als Code in ein Modul
Option Explicit 
  
Sub Load_Picture(rngPicCell As Range, lngSchemeColor As Long, sngLine_Weight As Single, Pfad_Bild$) 
'Tabelle anpassen 
With Sheets(rngPicCell.Parent.Name) 
    'Bild in Excel laden und Formatieren 
    With .Pictures.Insert(Pfad_Bild) 
        .ShapeRange.LockAspectRatio = msoTrue 
        .ShapeRange.LockAspectRatio = msoTrue 
        .ShapeRange.Height = 140# 
        .ShapeRange.Width = 186.17 
        .ShapeRange.Rotation = 0# 
        .ShapeRange.Fill.Visible = msoFalse 
        .ShapeRange.Fill.Solid 
        .ShapeRange.Line.Weight = sngLine_Weight 
        .ShapeRange.Line.DashStyle = msoLineSolid 
        .ShapeRange.Line.Style = msoLineSingle 
        .ShapeRange.Line.Visible = msoTrue 
        .ShapeRange.Line.ForeColor.SchemeColor = lngSchemeColor 
        .ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255) 
        .Top = rngPicCell.Top + .ShapeRange.Line.Weight 
        .Left = rngPicCell.Left + .ShapeRange.Line.Weight 
    End With 
  
End With 
End Sub 
Gruß Tino
Anzeige
AW: müsste so funktionieren...
29.07.2010 15:12:22
Karel
Spitze
Danke dir
Karel
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Bilder in Excel per Makro einfügen und anpassen


Schritt-für-Schritt-Anleitung

Um ein Bild in Excel per Makro einzufügen und anzupassen, kannst Du den folgenden Code verwenden. Dieser Code funktioniert in Excel 2007 und höher:

Sub Bilder_einfügen()
    Dim Pfad_Bild As String, rngPicCell As Range

    ' Pfad zum Bild
    Pfad_Bild = "C:\Bilder\1.jpg"

    ' Tabelle anpassen
    With Sheets("Template")
        ' Zelle anpassen
        Set rngPicCell = .Range("B7")

        ' Bild in Excel laden und formatieren
        With .Pictures.Insert(Pfad_Bild)
            .ShapeRange.LockAspectRatio = msoTrue
            .ShapeRange.Height = 140#
            .ShapeRange.Width = 186.17
            .Top = rngPicCell.Top
            .Left = rngPicCell.Left
        End With
    End With
End Sub

In diesem Beispiel wird ein Bild in die Zelle B7 der Tabelle "Template" eingefügt und die Größe des Bildes festgelegt.


Häufige Fehler und Lösungen

  1. Bild wird nicht an der richtigen Stelle eingefügt: Wenn das Bild nicht in der gewünschten Zelle erscheint, überprüfe die Verwendung von .Top und .Left, um die Position korrekt einzustellen.

  2. Fehlermeldungen beim Ausführen des Makros: Stelle sicher, dass der Pfad zu dem Bild korrekt ist. Ein falscher Pfad führt dazu, dass das Bild nicht geladen werden kann.

  3. Bild wird nicht skaliert: Achte darauf, dass die Zeile .ShapeRange.LockAspectRatio = msoTrue vor dem Festlegen von Höhe und Breite platziert ist, um das Seitenverhältnis des Bildes beizubehalten.


Alternative Methoden

Wenn Du Bilder in Excel einfügen möchtest, gibt es auch andere Ansätze:

  • Direktes Einfügen über das Menü: Du kannst Bilder auch manuell über die Menüleiste „Einfügen“ > „Bilder“ hinzufügen.
  • Doppelklick zum Einfügen: Mit folgendem Code kannst Du ein Bild durch Doppelklick auf eine Zelle einfügen:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Application.Dialogs(xlDialogInsertPicture).Show
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du Makros zum Einfügen von Bildern in Excel einsetzen kannst:

  1. Bilder in einer ganzen Tabelle einfügen: Du könntest den Code erweitern, um Bilder in mehrere Zellen einzufügen, indem Du eine Schleife verwendest.

  2. Benutzerdefinierte Bildformate: Du kannst den Code anpassen, um unterschiedliche Formate oder Größen für verschiedene Bilder zu verwenden.


Tipps für Profis

  • Ordnerstruktur für Bilder: Überlege, eine ordnerstruktur vorlage excel zu erstellen, um alle Deine Bilder organisiert zu halten. Dies erleichtert den Zugriff auf die Bilder beim Einfügen.
  • Verwendung von Variablen: Nutze Variablen für die Bildgröße und -position, um den Code flexibler zu gestalten und spätere Anpassungen zu erleichtern.
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung in Deinem Makro, um sicherzustellen, dass Dein Code robust ist und auch bei unerwarteten Eingaben funktioniert.

FAQ: Häufige Fragen

1. Wie kann ich ein Bild in eine Zelle einfügen und anpassen?
Du kannst das Bild in eine Zelle einfügen, indem Du den oben genannten Code verwendest und sicherstellst, dass die Position des Bildes entsprechend der Zelle festgelegt wird.

2. Funktioniert dieser Code in Excel 2003?
Der Code ist für Excel 2007 und höher optimiert. Für Excel 2003 kann es erforderlich sein, Anpassungen vorzunehmen, insbesondere bei der Verwendung von ShapeRange.

3. Wie kann ich mehrere Bilder gleichzeitig einfügen?
Du kannst eine Schleife verwenden, um durch eine Liste von Bildpfaden zu iterieren und die Bilder in die gewünschten Zellen einzufügen.

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