我很难弄清楚如何将链接中的图像添加到VBA图像控件中。
我可以使用以下内容将图像带入VBA:
Sheets("Elk").Shapes.AddPicture "http://images.summitpost.org/original/562016.jpg", msoFalse, msoTrue, 200, 200, 800, 700
这会将图片填充到工作表中,但现在我希望能够将其放入图像控件中。
这是一项可行的任务吗?
答案 0 :(得分:3)
您无法向ActiveX Image Control添加URL(我想这是您正在使用的URL),您必须先将图像保存在HDD上。
您可以使用标准的Windows dll urlmon
,并且应该在模块顶部声明URLDownloadToFile
函数。
在任何硬盘上选择一个临时文件夹下载图像,然后将其分配给图像控件,最后删除该文件。
Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
Private Sub Testit()
Image_Download "http://images.summitpost.org/original/562016.jpg"
End Sub
Private Sub Image_Download(strImgURL As String)
Dim lngRC As Long
strTempFile = "C:\temp\anyfilename.jpg"
lngRC = URLDownloadToFile(0, strImgURL, strTempFile, 0, 0)
If ret Then
MsgBox "The image download failed", vbExclamation
Else
MyImageControl.Picture = LoadPicture(strTempFile)
Kill strTempFile
End If
End Sub
注意图像格式。这只有在你继续使用JPG时才有效。如果您打算下载GIF或PNG,则必须相应地调整tempfile扩展名。
答案 1 :(得分:0)
此MrExcel.com thread有您正在寻找的答案。基本上有一种方法是通过使用“LoadPicture(文件路径)”方法在运行时将图像分配给图像控件。不幸的是,它不会将URL作为文件路径。如果图片在本地或共享驱动器中“LoadPicture”将是要走的路。遗憾...
LoadPicture()方法示例:
'Having that "Image1" is the name of the Image Control
Image1.Picture = LoadPicture("here the path to your picture")