Image on userform from picture in a worksheet

C

CG Rosen

Hi Group,

The code below loads a chart from a worksheet into an image in a userform.
Is it at all possible to use the some approach to load a picture inserted in
a
worksheet into the userform image?

Brgds

CG Rosén

Set CurrentChart = Sheets("Sheet1").ChartObjects(1).Chart
'Save chart as GIF
Fname = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
CurrentChart.Export Filename:=Fname, FilterName:="GIF"

'Show the chart
UserForm1.Image1.Picture = LoadPicture(Fname)

Kill (ThisWorkbook.Path & Application.PathSeparator & "temp.gif")
 
J

Jacob Skaria

Hi Rosen

Use the below procedure to save the picture to a location and then load this
to image control.

Sub Macro()
Fname = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
SavePictureAs "Picture 1", Fname, "GIF"
UserForm1.Image1.Picture = LoadPicture(Fname)
End Sub

Sub SavePictureAs(strPicName As String, strFile As String, strFormat As
String)

Dim wsTemp As Worksheet, chtObj As Chart, pObj As Picture
Dim dblWidth As Double, dblHeight As Double

ActiveSheet.Shapes(strPicName).Select
Set pObj = Selection
dblWidth = pObj.Width: dblHeight = pObj.Height: pObj.Copy

Application.ScreenUpdating = False

Set chtObj = Charts.Add: Set wsTemp = Sheets.Add
chtObj.Location Where:=xlLocationAsObject, Name:=wsTemp.Name
wsTemp.Range("A1").Select

With wsTemp.ChartObjects(1)
.Top = 0
.Left = 0
.Width = dblWidth
.Height = dblHeight
.Activate
.Chart.Paste
.Interior.ColorIndex = 1
.Chart.Export FileName:=strFile, FilterName:=strFormat
End With

Application.DisplayAlerts = False: wsTemp.Delete
Application.DisplayAlerts = True: Application.ScreenUpdating = True

End Sub


If this post helps click Yes
 
M

minimaster

If you store your pictures in an imagelist object then you can load
the picture into the userform directly without using a temporary image
file.

The imagelist object can be part of a worksheet or it can be part of
the userform itself. In both cases the normal user won't see the
imagelist object when the design mode is switched off, respectivly
when the userform is being displayed.

Here a code snippet which uses a imagelist object that is part of a
worksheet.

Sub UpdatePic(i As Integer)
Dim ilist As ImageList
With ThisWorkbook
' load the picture from our imagelist
Set ilist = .Worksheets(COLORsheet).OLEObjects
("ImageList1").Object
With ilist.ListImages
PaletteForm.Image1.Picture = .Item(i)
End With
End With
PaletteForm.Repaint
End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top