[英]Adding Images from Internet into VBA Image Control
我很难弄清楚如何将链接中的图像添加到VBA图像控件中。
我可以使用以下内容将图像带入VBA:
Sheets("Elk").Shapes.AddPicture "http://images.summitpost.org/original/562016.jpg", msoFalse, msoTrue, 200, 200, 800, 700
这会将图片填充到工作表中,但现在我希望能够将其放入图像控件中。
这是一项可行的任务吗?
您无法将URL添加到ActiveX Image Control(我想这是您正在使用的URL),您必须先将图像保存在HDD上。
您可以使用标准的Windows动态链接库urlmon
对于这一点,你应该把它声明的URLDownloadToFile
您模块顶部功能。
选择任何HDD上的临时文件夹以下载图像,然后将其分配给图像控件,最后删除该文件。
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扩展名。
这个MrExcel.com 主题提供了您正在寻找的答案。 基本上有一种方法是通过使用“LoadPicture(文件路径)”方法在运行时将图像分配给图像控件。 不幸的是,它不会将URL作为文件路径。 如果图片在本地或共享驱动器中“LoadPicture”将是要走的路。 抱歉...
LoadPicture()方法示例:
'Having that "Image1" is the name of the Image Control
Image1.Picture = LoadPicture("here the path to your picture")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.