从Internet添加图像到VBA图像控件

时间:2016-04-12 15:04:50

标签: excel image vba excel-vba

我很难弄清楚如何将链接中的图像添加到VBA图像控件中。

我可以使用以下内容将图像带入VBA:

Sheets("Elk").Shapes.AddPicture "http://images.summitpost.org/original/562016.jpg", msoFalse, msoTrue, 200, 200, 800, 700

这会将图片填充到工作表中,但现在我希望能够将其放入图像控件中。

这是一项可行的任务吗?

2 个答案:

答案 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")