步骤
- 打开Excel,并按下
Alt + F11
打开VBA编辑器。 - 在VBA编辑器中,插入一个新的模块(右键点击项目资源管理器中的模块 -> 插入 -> 模块)。
- 在新模块的代码窗口中,复制并粘贴以下示例代码。
- 根据需要修改代码中的变量和参数。
- 回到Excel,你可以通过按
Alt + F8
来运行这个宏,或者将宏与一个按钮或快捷键关联起来。
Sub ImportPicturesFromURLs()Dim ws As WorksheetDim lastRow As LongDim urlCell As RangeDim imgPath As StringDim img As PictureDim targetCell As RangeDim xmlhttp As ObjectDim adodbStream As Object' 初始化工作表、URL路径和图片目标位置Set ws = ThisWorkbook.Sheets("Sheet1") ' 修改为你的工作表名称' 初始化XMLHTTP和ADODB.Stream对象Set xmlhttp = CreateObject("MSXML2.XMLHTTP")Set adodbStream = CreateObject("ADODB.Stream")' 获取最后一行lastRow = ws.Cells(ws.Rows.Count, "G").End(xlUp).Row' 初始化随机数生成器(只需在程序开始时调用一次)Randomize Now() ' 使用当前时间作为种子Dim randomNumber As Integer' 遍历列A中的每个URLFor Each urlCell In ws.Range("G2:G" & lastRow) ' 假设数据从第2行开始If Not IsEmpty(urlCell.Value) Then ' 检查单元格是否为空randomNumber = Int((100000 * Rnd) + 1)imgPath = "d:\zzf\upload\" & randomNumber & ".jpg" ' 修改为你的临时图片保存路径' 下载图片xmlhttp.Open "GET", urlCell.Value, Falsexmlhttp.send' 将图片保存到临时位置With adodbStream.Open.Type = 1 ' 二进制数据.write (xmlhttp.responseBody).SaveToFile imgPath, 2 ' 覆盖已存在的文件.CloseEnd With' 在旁边的单元格(例如B列)插入图片Set targetCell = urlCell.Offset(0, 11) ' 假设图片插入到B列' 插入新图片Set img = ws.Pictures.Insert(imgPath)With img.ShapeRange.LockAspectRatio = msoFalse.Top = targetCell.Top.Left = targetCell.Left' 根据需要设置图片大小和其他属性.ShapeRange.Width = 20.ShapeRange.Height = 20End WithEnd IfNext urlCell' 清理对象Set xmlhttp = NothingSet adodbStream = NothingSet img = Nothing
End Sub
运行情况:
小伙伴有运行问题可留言或私信。