vba中,可不可以用Excel中已插入的图片给图像控件picture属性赋值?

如题所述

第1个回答  2021-02-10
这个是个老大难的问题,VBA本身没貌似没这功能,要不就自己API一个
要不就曲线救国,先把插入的图片导出,再导入到图像控件中,然后再用多个事件删除导出的图片。追问

按您的思路,有示例代码吗?谢谢!

追答

我不会类编制,这只是思路
曲线救国的方法都是些基本代码,
导出图片
导入图像控件
事件删除图片
On Error Resume Next
'导出图片
pth = ThisWorkbook.Path & "\Temporary FolderYY"
MkDir pth
For Each shp In sh2.Shapes
n = n + 1
shp.Copy
With ActiveSheet.ChartObjects.ADD(0, 0, shp.Width, shp.Height).Chart
.Parent.Select
.Paste
.Export pth & "\" & sh2.Cells(n, 1) & ".jpg"
.Parent.Delete
End With
Next
n = 0
'导入图像控件
Dim imlImages As New ImageList
imlImages.ImageWidth = 16
imlImages.ImageHeight = 16
imlImages.ListImages.ADD , "不选", LoadPicture(pth & "\不选.jpg")
imlImages.ListImages.ADD , "半选", LoadPicture(pth & "\半选.jpg")
imlImages.ListImages.ADD , "全选", LoadPicture(pth & "\全选.jpg")
Set TreeView1.ImageList = imlImages
随便列举一个事件
Private Sub UserForm_Terminate()
Dim myFolder
Dim fso As Object
myFolder = ThisWorkbook.Path & "\Temporary FolderYY"
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(myFolder) = True Then
fso.DeleteFolder myFolder, force:=True
End If
Set fso = Nothing
End Sub

本回答被提问者采纳
第2个回答  2023-08-22
如果已经有了图像控件,那么在属性页的“picture”属性处即可将需要插入的图片赋值给此图像控件。