1、原理
通过图片的网络路径,将图片下载到本地,excel读取本地路径,显示图片。
注意:下载的图片路径改变将无法展示
2、准备
2.1、excel版本
MS_Office_2016
2.2、excel开启宏
选项 -》信任中心 -》 信任中心设置 -》 宏设置 -》启用所有宏
2.3、另存为宏文件
表格数据
另存为宏文件
3、宏编程
-
打开宏文件
-
Alt + F11 : 打开宏编辑器,新建模块,复制以下代码
Sub DownloadAndShowImages()
Dim ws As Worksheet
Dim cell As Range
Dim pic As Picture
' 修改为你的图片链接所在的工作表
Set ws = ThisWorkbook.Sheets("Sheet1")
For Each cell In ws.Range("C2:C" & ws.Cells(ws.Rows.Count, "C").End(xlUp).Row)
' 下载图片到本地缓存,使用第一列的内容作为文件名
Dim fileName As String
fileName = "C:\Temp\" & cell.Offset(0, -2).Value & ".jpg"
DownloadImage cell.Value, fileName
' 在工作表中插入图片
Set pic = ws.Pictures.Insert(fileName)
' 调整图片大小和位置,根据需要修改
pic.Top = cell.Top
pic.Left = cell.Offset(0, 1).Left
pic.Width = 100 ' 修改为适当的宽度
pic.Height = 100 ' 修改为适当的高度
Next cell
End Sub
Sub DownloadImage(url As String, savePath As String)
Dim objXML As Object
Dim objHTTP As Object
Dim oStream As Object
' 创建文件夹(如果不存在)
If Dir("C:\Temp\", vbDirectory) = "" Then
MkDir "C:\Temp\"
End If
Set objXML = CreateObject("MSXML2.ServerXMLHTTP")
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
objXML.Open "GET", url, False
objXML.send ""
If objXML.Status = 200 Then
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
objHTTP.Open "GET", url, False
objHTTP.send ""
If objHTTP.Status = 200 Then
Set oStream = CreateObject("ADODB.Stream")
oStream.Open
oStream.Type = 1
oStream.Write objHTTP.responseBody
oStream.SaveToFile savePath, 2 ' 1: 不覆盖, 2: 覆盖
oStream.Close
End If
End If
Set objXML = Nothing
Set objHTTP = Nothing
Set oStream = Nothing
End Sub
- 保存关闭,Alt + F8, 选择宏执行
- 结果下载图片,展示图片