EXCEL VBA批量显示URL网络图片



应用情景: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 表示插入图片的列,应用前记得先调这一列为合适的行高列宽。

有一点不好的是,数据量比较多的时候会出现假死的情况,只有等执行完成即可。