EXCEL VBA批量显示URL网络图片
本文关键字: excel, url, VBA, 宏应用情景:excel的列中有图片URL,但是一个一个打开速度慢,如何直接在EXCEL中显示远程图片?
解决方案:直接上宏代码—
Sub InsertPic(图片链接 As String, 插入图片表名 As String, 插入图片单元格地址 As String)
On Error Resume Next '容错代码和下面err.number对应代码
Dim rng As Range
Set rng = Sheets(插入图片表名).Range(插入图片单元格地址)
'插入一个矩形框,然后在矩形框上黏贴图片
With Sheets(插入图片表名).Shapes.AddShape(msoShapeRectangle, rng.Left + 1.5, rng.Top + 1.5, rng.Width - 3, rng.Height - 3).Select
'为什么用这种方法?因为这样插入的图片会小很多,能节省空间
Selection.ShapeRange.Fill.UserPicture 图片链接
'无边框
Selection.ShapeRange.Line.Visible = msoFalse
'如果因为未知原因造成出错,我们就删除插入的矩形框
If Err.Number <> 0 Then
Selection.Delete
Err.Clear
End If
End With
Set rng = Nothing
End Sub
'这个是主程序了,它才是执行得主体,调用上面程序
Sub 插入网络图片()
Dim lngRow As Long
Dim i As Long
'找到当前表的数据最后一行的行号
lngRow = Cells(Rows.Count, 1).End(xlUp).Row
'从第3行开始向最后一行循环
For i = 2 To lngRow
'调用上面哪个程序,给它B列地址图片网址,当前工作表名字,C列对应单元格插入图片
Call InsertPic(Cells(i, 2).Value, ActiveSheet.Name, "c" & i)
Next
End Sub
Call InsertPic(Cells(i, 2).Value, ActiveSheet.Name, “c” & i) 主要调整这里: (i,2)中的2表示第2列,根据实际情况调整即可, “c”&i 中的c 表示插入图片的列,应用前记得先调这一列为合适的行高列宽。
有一点不好的是,数据量比较多的时候会出现假死的情况,只有等执行完成即可。