Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1492to1496
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Bild einfügen klappt nicht
11.05.2016 18:48:08
Oisse
Hallo Zusammen,
ich würde Folgendes gerne realisieren.
In einem Ordner sind Bilder hinterlegt. Die Namen der Bilder setzen sich zusammen aus der Tabelle "Artikel", Spalte 11 und Spalte 12 mit einem Unterstrich dazwischen.
Wenn nun die einzelnen Artikel entweder durch einen gesetzten Filter oder aber durch manuelle Auswahl selektiert sind, dann sollen dazu die Bilder eingefügt werden oder aber, wenn kein Bild vorhanden ist, der Text: "Bild fehlt!"
Folgenden Code habe ich bereits zusammengeschnipselt. Allerdings funktioniert er so nicht.
Könnte bitte mal jemand drüber schauen?
Private Sub OptionButton1_Click()
Dim lPathCol As String        ' Verzeichnis
Dim lPicNameCol As String      ' Bildname
Dim lPicCol As Long          ' Spalte in der Bild erscheinen soll
Dim lRow As Range
Dim rng_Row As Range
Dim int_Counter As Integer
Dim wks_Ang As Worksheet
Dim wks_Art As Worksheet
Dim Text As String
Tbl1 = "Angebote"
Tbl2 = "Artikel"
lPathCol = ThisWorkbook.Path & "\Images"
lPicCol = 24
Set wks_Ang = ThisWorkbook.Worksheets(Tbl1)
Set wks_Art = ThisWorkbook.Worksheets(Tbl2)
'If Target.Column > 1 Or Target.Count > 1 Then Exit Sub
'If IsEmpty(Target) Then Exit Sub
On Error Resume Next
wks_Art.Pictures.Delete
On Error GoTo 0
If wks_Art.AutoFilter.FilterMode = True Then  'Prüfen ob der Autofilter gesetzt ist, wenn  _
ja, dann:
ActiveSheet.Range("A3:W" & ActiveSheet.UsedRange.Rows.Count). _
SpecialCells(xlCellTypeVisible).Select                     'alle sichtbaren Zeilen  _
selektieren
For Each lRow In Selection.Rows
lPicNameCol = wks_Art.Cells(lRow.Row, 11) & "_" & wks_Art.Cells(lRow.Row, 12)
If Dir(Cells(lRow.Row, lPathCol).Text & "\" & Cells(lRow.Row, lPicNameCol).Text) =  _
"" Then 'Hier kommt die Fehlermeldung "Typen unverträglich"
Cells(lRow.Row, lPicCol) = "Bild fehlt!"
Else
Cells(lRow.Row, lPicCol).ClearContents
With Pictures.Insert(Cells(lRow.Row, lPathCol).Text & "\" & Cells(lRow.Row,  _
lPicNameCol).Text)
'Anpassen an die Zellegrösse
.Top = Rows(lRow).Top
.Height = Rows(lRow).Height
.Left = Columns(lPicCol).Left
.Width = Columns(lPicCol).Width
End With
End If
Next lRow
Cancel = True
Else
For Each lRow In Selection.Rows
lPicNameCol = wks_Art.Cells(lRow.Row, 11) & "_" & wks_Art.Cells(lRow.Row, 12)
If Dir(Cells(lRow.Row, lPathCol).Text & "\" & Cells(lRow.Row, lPicNameCol).Text) =  _
"" Then
Cells(lRow.Row, lPicCol) = "Bild fehlt!"
Else
Cells(lRow.Rows, lPicCol).ClearContents
With Pictures.Insert(Cells(lRow.Rows, lPathCol).Text & "\" & Cells(lRow.Rows,  _
lPicNameCol).Text)
'Anpassen an die Zellegrösse
.Top = Rows(lRow).Top
.Height = Rows(lRow).Height
.Left = Columns(lPicCol).Left
.Width = Columns(lPicCol).Width
End With
End If
Next lRow
Cancel = True
Wie kann ich außerdem eine feste Bildgröße einstellen von 4x4 cm?
Vielen Dank schon mal

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bild einfügen klappt nicht
11.05.2016 19:06:16
Michael
Hi Oisse,
ich lasse den Thread mal offen, da ich mir das Makro (jetzt) nicht ansehen mag.
4x4 cm kannste vergessen, derweil das auf die Auflösung des Monitors, die Zoom-Einstellungen unter "Ansicht" usw. ankommt.
Ich würde Dir aber grundsätzlich raten, eine Kopie des Bildmaterials mit der gewünschten Größe anzulegen, das spart a) Speicherplatz=Ladezeiten in Excel und b) Herumrechnerei.
Es gibt Programme, die das verzeichnisweise in einem Rutsch können, z.B. IrfanView (kostet nix).
Schöne Grüße,
Michael

AW: Bild einfügen klappt nicht
11.05.2016 19:15:11
Oisse
Hallo Michael und danke schon mal für den Hinweis.
Gruß
Oisse

Anzeige
AW: Bild einfügen klappt nicht
11.05.2016 20:42:30
Oisse
Ich habe die Fehler gefunden.
Danke fürs anschauen und prüfen an alle.
Falls ihn noch jemand ansehen will.

Private Sub OptionButton1_Click()
Dim lPathCol As String        ' Verzeichnis
Dim lPicNameCol As String      ' Bildname
Dim lPicCol As Long          ' Spalte in der das Bild erscheinen soll
Dim lRow As Range
Dim rng_Row As Range
Dim int_Counter As Integer
Dim wks_Ang As Worksheet
Dim wks_Art As Worksheet
Dim Text As String
Tbl1 = "Angebote"
Tbl2 = "Artikel"
lPathCol = ThisWorkbook.Path & "\Images\"
lPicCol = 24
Set wks_Ang = ThisWorkbook.Worksheets(Tbl1)
Set wks_Art = ThisWorkbook.Worksheets(Tbl2)
'If Target.Column > 1 Or Target.Count > 1 Then Exit Sub
'If IsEmpty(Target) Then Exit Sub
On Error Resume Next
wks_Art.Pictures.Delete
On Error GoTo 0
If wks_Art.AutoFilter.FilterMode = True Then  'Prüfen ob der Autofilter gesetzt ist, wenn  _
ja, dann:
ActiveSheet.Range("A3:W" & ActiveSheet.UsedRange.Rows.Count). _
SpecialCells(xlCellTypeVisible).Select                     'alle sichtbaren Zeilen  _
selektieren
For Each lRow In Selection.Rows
lPicNameCol = wks_Art.Cells(lRow.Row, 11) & "_" & wks_Art.Cells(lRow.Row, 12) & ". _
jpg"
If Dir(lPathCol & lPicNameCol) = "" Then
Cells(lRow.Row, lPicCol) = "Bild fehlt!"
Else
Cells(lRow.Row, lPicCol).ClearContents
With ActiveSheet.Pictures.Insert(lPathCol & lPicNameCol) 'Anpassen an die  _
Zellengrösse
.Top = Rows(lRow.Row).Top
.Height = Rows(lRow.Row).Height
.Left = Columns(lPicCol).Left
.Width = Columns(lPicCol).Width
End With
End If
Next lRow
Cancel = True
Else
For Each lRow In Selection.Rows
lPicNameCol = wks_Art.Cells(lRow.Row, 11) & "_" & wks_Art.Cells(lRow.Row, 12) & ". _
jpg"
If Dir(lPathCol & lPicNameCol) = "" Then
Cells(lRow.Row, lPicCol) = "Bild fehlt!"
Else
Cells(lRow.Row, lPicCol).ClearContents
With ActiveSheet.Pictures.Insert(lPathCol & lPicNameCol) 'Anpassen an die  _
Zellengrösse
.Top = Rows(lRow.Row).Top
.Height = Rows(lRow.Row).Height
.Left = Columns(lPicCol).Left
.Width = Columns(lPicCol).Width
End With
End If
Next lRow

Aber ich hätte trotzdem noch eine Frage.
Kann ich die Zeilenhöhe explizit so ändern, dass das Bild hineinpasst?
Noch einen schönen Abend
Gruß Oisse

Anzeige
AW: Bild einfügen klappt nicht
11.05.2016 21:10:47
Michael
Hi Oisse,
eigentlich müßte es reichen, in den Zeilen:
.Height = Rows(lRow.Row).Height
das links und rechts vom = zu vertauschen.
Schöne Grüße,
Michael

AW: Bild einfügen klappt nicht
12.05.2016 09:54:20
Oisse
Hallo Michael und danke für deine Antwort.
Leider kann ich das nicht testen.
Ich habe den Code, so wie geschrieben ausgeführt und es hat alles einwandfrei funktioniert.
Auch heute morgen habe ich Bilder geladen und es hat geklappt.
Ohne etwas geändert zu haben kommt jetzt plötzlich die Fehlermeldung Objektvariable oder With-BlockVariable nicht festgelegt.
Die Fehlermeldung kommt hier:
 If wks_Art.AutoFilter.FilterMode = True Then  'Prüfen ob der Autofilter gesetzt ist, wenn ja,  _
dann:
ActiveSheet.Range("A3:W" & ActiveSheet.UsedRange.Rows.Count). _
SpecialCells(xlCellTypeVisible).Select                     'alle sichtbaren Zeilen  _
selektieren
For Each lRow In Selection.Rows
lPicNameCol = wks_Art.Cells(lRow.Row, 11) & "_" & wks_Art.Cells(lRow.Row, 12) & ". _
jpg"
If Dir(lPathCol & lPicNameCol) = "" Then
Cells(lRow.Row, lPicCol) = "Bild fehlt!"    'lRow.Row hier kommt der Fehler
Else
Cells(lRow.Row, lPicCol).ClearContents
With ActiveSheet.Pictures.Insert(lPathCol & lPicNameCol) 'Anpassen an die  _
Zellengrösse
.Top = Rows(lRow.Row).Top
.Height = Rows(lRow.Row).Height
.Left = Columns(lPicCol).Left
.Width = Columns(lPicCol).Width
End With
End If
Next lRow

Warum funktioniert das auf einmal nicht mehr?

Anzeige
AW: Bild einfügen klappt nicht
13.05.2016 14:43:23
Michael
Hi Oisse,
es ist natürlich schwer zu testen; ich müßte alles mögliche Drumherum basteln, um das Makro laufen zu lassen, das ist mir zu aufwendig.
Eine mögliche Fehlerursache könnte beim Autofilter liegen. Die Abfrage nach dem .FilterMode ist nämlich fehlerhaft, wenn kein Filter gesetzt ist, recherchiere mal z.B. nach:
excel vba überprüfen ob autofilter gesetzt
Schöne Grüße,
Michael

98 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige