Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1772to1776
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 aus Zelle in Userform anzeigen
29.07.2020 02:46:27
Sleepyhead
Guten Morgen zusammen,
hier gleich das nächste Problemkind...
Ich möchte in meiner Userform je nach Auswahl eines Eintrages in der zugehörigen ListBox das Bild welches zu dem Eintrag in der Listform gehört anzeigen lassen. Sowohl die Daten für die ListBox als auch für die Image-form sind in einem Worksheet desselben Workbooks gespeichert.
Ich habe mich online schon durch viele verschiedene Foren gewälzt, jedoch keine direkte Lösung für mein Problem gefunden. Ich kann die Bilder nicht anhand der Bildnummer suchen, da diese auch von einem User ohne jegliche Ahnung von Excel in dem Worksheet eingefügt werden sollen.
Versucht habe ich dies z.B. indem ich die ZellAdresse in der das jeweilige Bild gespeichert ist ansteuer und mir das Object bzw. Picture der Zelle in der Useform direkt anzeigen lasse.
Könnte mir jemand ein Sub-Beispiel dafür geben wie ich mir Bilder aus dem Worksheet anzeigen lassen kann und ggf. auch eine Möglichkeit ein eingefügtes Bild direkt mit der Zelle zu verankern, sodass auch bei neuen Einträgen der Zellenbezug des Bildes gleichbleibt?
Vielen Dank im Voraus
LG
Sleepyhead

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bild aus Zelle in Userform anzeigen
29.07.2020 08:24:58
volti
Hallo Sleepyhead,
hier mal zwei Beispiele, wie Du Bilder aus Deinem Worksheet in einer Userform anzeigen lassen kannst.
Einmal über den Namen des Bildes und einmal über die Zellposition. Der code kann in ein Modul oder auch in einen UF-Bereich. Tabellenname und Image müsstet Du noch anpassen, dann sollte es funktionieren.
[+][-]
Option Explicit Private Declare PtrSafe Function OleCreatePictureIndirect Lib "oleaut32.dll" ( _ ByRef PicDesc As PIC_DESC, ByRef RefIID As GUID, _ ByVal fPictureOwnsHandle As LongPtr, ByRef IPic As IPictureDisp) As Long Private Declare PtrSafe Function CopyImage Lib "user32" ( _ ByVal handle As LongPtr, ByVal un1 As Long, ByVal n1 As Long, _ ByVal n2 As Long, ByVal un2 As Long) As LongPtr Private Declare PtrSafe Function IsClipboardFormatAvailable Lib "user32" ( _ ByVal wFormat As Long) As Long Private Declare PtrSafe Function SetClipboardData Lib "user32" (ByVal wFormat As Long, _ ByVal hMem As LongPtr) As LongPtr Private Declare PtrSafe Function GetClipboardData Lib "user32" ( _ ByVal wFormat As Long) As LongPtr Private Declare PtrSafe Function OpenClipboard Lib "user32" (ByVal hWnd As LongPtr) As Long Private Declare PtrSafe Function CloseClipboard Lib "user32" () As Long Private Declare PtrSafe Function EmptyClipboard Lib "user32" () As Long Private Declare PtrSafe Function RegisterClipboardFormat Lib "user32" _ Alias "RegisterClipboardFormatA" (ByVal lpString As String) As Long Private Type PIC_DESC lSize As Long lType As Long hPic As LongPtr hPal As LongPtr End Type Dim hPic As LongPtr Private Type GUID Data1 As Long Data2 As Integer Data3 As Integer Data4(0 To 7) As Byte End Type Private Const PICTYPE_BITMAP = 1 Private Const CF_BITMAP = 2 Private Const IMAGE_BITMAP = 0 Private Const LR_COPYRETURNORG = &H4 Sub Paste_Picture_ByPosition(iZeile As Long) 'Fügt ein Bild aus einer Pic-Sammlung über die Zwischenablage in ein Userform-Control ein Dim oPict As IPictureDisp, oShape As Shape Dim tPicInfo As PIC_DESC, tID_IDispatch As GUID 'Bild suchen und in die Zwischenablage kopieren With ThisWorkbook.Sheets("Tabelle2") For Each oShape In .Shapes If oShape.TopLeftCell.Address = .Cells(iZeile, "A").Address Then oShape.CopyPicture Appearance:=xlScreen, Format:=xlBitmap DoEvents: Exit For End If Next oShape End With 'Bild aus Zwischenablage in das Image einfügen If IsClipboardFormatAvailable(CF_BITMAP) <> 0 Then If OpenClipboard(0&) <> 0 Then hPic = CopyImage(GetClipboardData(CF_BITMAP), _ IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG) CloseClipboard If hPic <> 0 Then With tID_IDispatch .Data1 = &H20400 .Data4(0) = &HC0 .Data4(7) = &H46 End With With tPicInfo .lSize = Len(tPicInfo) .lType = PICTYPE_BITMAP .hPic = hPic .hPal = 0 End With OleCreatePictureIndirect tPicInfo, tID_IDispatch, 0&, oPict If Not oPict Is Nothing Then '######### Hier die Userform und Image-Angaben anpassen ######## UserForm1.Image3.Picture = oPict Else MsgBox "Das Bild kann nicht angezeigt werden", vbCritical, "Bild einfügen" End If End If End If End If End Sub Sub Paste_Picture_ByName(sSuch As String) 'Fügt ein Bild aus einer Pic-Sammlung über die Zwischenablage in ein Userform-Control ein Dim oPict As IPictureDisp, oShape As Shape Dim tPicInfo As PIC_DESC, tID_IDispatch As GUID 'Bild suchen und in die Zwischenablage kopieren With ThisWorkbook.Sheets("Tabelle2") For Each oShape In .Shapes If oShape.Name Like sSuch & "*" Then oShape.CopyPicture Appearance:=xlScreen, Format:=xlBitmap DoEvents: Exit For End If Next oShape End With 'Bild aus Zwischenablage in das Image einfügen If IsClipboardFormatAvailable(CF_BITMAP) <> 0 Then If OpenClipboard(0&) <> 0 Then hPic = CopyImage(GetClipboardData(CF_BITMAP), _ IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG) CloseClipboard If hPic <> 0 Then With tID_IDispatch .Data1 = &H20400 .Data4(0) = &HC0 .Data4(7) = &H46 End With With tPicInfo .lSize = Len(tPicInfo) .lType = PICTYPE_BITMAP .hPic = hPic .hPal = 0 End With OleCreatePictureIndirect tPicInfo, tID_IDispatch, 0&, oPict If Not oPict Is Nothing Then '######### Hier die Userform und Image-Angaben anpassen ######## UserForm1.Image3.Picture = oPict Else MsgBox "Das Bild kann nicht angezeigt werden", vbCritical, "Bild einfügen" End If End If End If End If End Sub
viele Grüße aus Freigericht
Karl-Heinz

Anzeige
AW: Bild aus Zelle in Userform anzeigen
29.07.2020 22:43:02
Sleepyhead
Vielen vielen Dank Karl Heinz,
damit kann ich etwas anfangen, ich werde das ganze nur noch ein wenig anpassen müssen, da sich die Userform auf über 10.000 Zeilen mit Daten und Bildern pro Sheet bezieht aber mit dieser erstklassigen Vorlage bekomme ich das hin.
LG
Sleepyhead

124 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige