Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1436to1440
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
jpg in UserForm anzeigen
27.07.2015 11:18:02
Weber
Hallo,
ich komm bei einem kleinem "Problem" nicht weiter. Ich habe schon mit VBA (vor 2 Jahren) gearbeitet und einige Programme geschrieben, darunter auch Text ausgaben in UserForm.
Vielleicht ist das Problem auch nicht mit Userform lösbar.
Ich habe drei sheets in meiner Mappe. Allgemein, Styles und Spezial.
In Styles habe ich verschiedene Bilder kopiert. Diese Bilder möchte ich mit einem Button im Sheet Allgemein in einer Box (hier UserForm) ausgeben lassen.
Meine Sub habe ich so aufgerufen:
Private Sub CommandButton1_Click()
End Sub

Ich schaffe es aber nicht, die Verschiedenen Bilder (die nennen sich nur Picture 1- x) in die Box anzeigen zu lassen.
Ich weiss nicht wie ich das mit Grafiken machen kann. Könnt ihr mir bitte weiter helfen?
Gruß

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: jpg in UserForm anzeigen
27.07.2015 13:38:22
Nepumuk
Hallo,
hast du für jedes Bild einen Button oder wie hast du dir das vorgestellt?
Gruß
Nepumuk

AW: jpg in UserForm anzeigen
27.07.2015 13:40:41
Weber
Hi,
ich möchte jedes Bild mit einem anderen Button anzeigen. Also jedes Bild hat nen anderen Button.

AW: jpg in UserForm anzeigen
27.07.2015 13:58:02
Nepumuk
Hallo,
ich hab dir mal eine Mustermappe gemacht:

Die Datei https://www.herber.de/bbs/user/99092.xlsm wurde aus Datenschutzgründen gelöscht


Gruß
Nepumuk

AW: jpg in UserForm anzeigen
27.07.2015 15:20:06
Weber
Danke für deine Mühe....
Jedoch habe ich mich nicht richtig erklärt. Auf dem Sheet "Allgemein" ist ein Button, der aus dem Sheet "Styles" mir das Bild in einer Box ausgibt. Es spielt sich alles auf dem Sheet "Allgemein" ab.
Ich habe mal deinen Code genutzt, komme da aber nicht so recht mit klar.

Anzeige
AW: jpg in UserForm anzeigen
27.07.2015 14:01:47
Rudi
Hallo,
ich komm bei einem kleinem "Problem" nicht weiter
so klein ist das gar nicht.
In ein Modul:
Option Explicit
'Code von Nepumuk  *********************************************************
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" ( _
ByRef PicDesc As PIC_DESC, _
ByRef RefIID As GUID, _
ByVal fPictureOwnsHandle As Long, _
ByRef IPic As IPictureDisp) As Long
Private Declare Function CopyImage Lib "user32.dll" ( _
ByVal handle As Long, _
ByVal un1 As Long, _
ByVal n1 As Long, _
ByVal n2 As Long, _
ByVal un2 As Long) As Long
Private Declare Function IsClipboardFormatAvailable Lib "user32.dll" ( _
ByVal wFormat As Integer) As Long
Private Declare Function OpenClipboard Lib "user32.dll" ( _
ByVal hWnd As Long) As Long
Private Declare Function GetClipboardData Lib "user32.dll" ( _
ByVal wFormat As Integer) As Long
Private Declare Function EmptyClipboard Lib "user32.dll" () As Long
Private Declare Function CloseClipboard Lib "user32.dll" () As Long
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type
Private Type PIC_DESC
lngSize As Long
lngType As Long
lnghPic As Long
lnghPal As Long
End Type
Private Const PICTYPE_BITMAP = 1
Private Const CF_BITMAP = 2
Private Const IMAGE_BITMAP = 0
Private Const LR_COPYRETURNORG = &H4
Private Const GC_CLASSNAMEMSEXCEL = "XLMAIN"
Private Function Paste_Picture() As IPictureDisp
Dim lngReturn As Long, lngCopy As Long, lngPointer As Long
Dim i As Long
If IsClipboardFormatAvailable(CF_BITMAP)  0 Then
lngReturn = OpenClipboard(FindWindow(GC_CLASSNAMEMSEXCEL, Application.Caption))
If lngReturn > 0 Then
lngPointer = GetClipboardData(CF_BITMAP)
lngCopy = CopyImage(lngPointer, IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG)
Call CloseClipboard
If lngPointer  0 Then Set Paste_Picture = Create_Picture(lngCopy, 0&, CF_BITMAP)
End If
End If
End Function
Private Function Create_Picture( _
ByVal lnghPic As Long, _
ByVal lnghPal As Long, _
ByVal lngPicType As Long) As IPictureDisp
Dim udtPicInfo As PIC_DESC, udtID_IDispatch As GUID
Dim objPicture As IPictureDisp
With udtID_IDispatch
.Data1 = &H7BF80980
.Data2 = &HBF32
.Data3 = &H101A
.Data4(0) = &H8B
.Data4(1) = &HBB
.Data4(2) = &H0
.Data4(3) = &HAA
.Data4(4) = &H0
.Data4(5) = &H30
.Data4(6) = &HC
.Data4(7) = &HAB
End With
With udtPicInfo
.lngSize = Len(udtPicInfo)
.lngType = PICTYPE_BITMAP
.lnghPic = lnghPic
.lnghPal = lnghPal
End With
Call OleCreatePictureIndirect(udtPicInfo, udtID_IDispatch, 0&, objPicture)
Set Create_Picture = objPicture
End Function
Public Sub Show_Picture(ImageControl As MSForms.Image)
Dim objPicture As IPictureDisp
Call EmptyClipboard
Set objPicture = Paste_Picture
If Not objPicture Is Nothing Then
ImageControl.Picture = objPicture
Else
ImageControl.Picture = LoadPicture("")
End If
End Sub

In der UF (CommandButton 'cmd1' und ImageControl 'Image1'):
Private Sub cmd1_Click()
Tabelle2.Shapes(1).CopyPicture xlScreen, xlBitmap
Show_Picture Image1
End Sub

Gruß
Rudi

Anzeige
AW: jpg in UserForm anzeigen
27.07.2015 15:24:30
JoWE
Hallo Rudi,
eine tolle Lösung. Kann ich bestimmt irgendwann anwenden.
Bisher habe ich die Bilder stets über Ihren Speicherpfad eingefügt.
Wusste nicht das das auch über die Zwischenablage klappt.
Danke.
Doch noch eine Frage: Wie verhält es sich mit der Dateigröße bei derartigem Vorgehen?
Gruß
Jochen

AW: jpg in UserForm anzeigen
27.07.2015 16:20:25
Nepumuk
Hallo Jochen,
das ist ein relativ alter Code von mir der noch Speicher frisst weil das Bild im Arbeitsspeicher nicht mehr gelöscht wird. Sprich mit jedem Bild wächst der Speicherbedarf um die Größe des Bildes an. Schau mal in die letzte Mappe die ich hochgeladen habe, da ist das Löschen drin. Auch das Erstellen der GUID-Struktur ist aktueller.
Gruß
Nepumuk

Anzeige
AW: jpg in UserForm anzeigen
27.07.2015 17:22:34
JoWE
Hallo Nepumuk,
ah, sowas hatte ich mir schon gedacht.
Danke für den Hinweis.
Gruß
Jochen

AW: jpg in UserForm anzeigen
28.07.2015 13:40:32
Weber
Ich möchte mich bedanken.....aber leider bekomme ich es nicht ans laufen. Ich denke ich werde das Thema mal sacken lassen und mich am WE nochmal dran hängen.....
Also das hochgeladene Sheet von Nepomuk läuft...und das anpassen an meine "Bedingung" läuft ohne Fehler, jedoch wird
Private Sub CommandButton1_Click()
Call Show_Picture("Picture 1")
End Sub
endlos aufgerufen....
Aber nochmal danke!!!
Gruß

Anzeige
AW: jpg in UserForm anzeigen
28.07.2015 15:19:50
Weber
Ok...habs geschnallt. Es läuft. Danke euch herzlich!

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige