快捷搜索:   nginx

EXCEL批量插图的几种方法(含批注插图,VBA插图,以及用插图公式插入图片)(2)



二、插图到单元格里面,直接显示
插图到单元格的,有两种方式可以选择,一种用宏,一种用公式
先说宏:
Sub 插入图片()
    Dim rng As Range, ML, MT, MW, MH, shp As Shape, Myc%, Myr&, i&, j&
    On Error Resume Next
   
    For Each shp In ActiveSheet.Shapes
        If shp.Type = msoAutoShape Then
            shp.Delete
        End If
    Next
    Myr = [c65536].End(xlUp).Row   '货号所在的列为C,如果不是在C这里自行修改一下
    Myc = [iv9].End(xlToLeft).Column
    For i = 9 To Myr Step 8    '纵向从第9行(行号9)开始插图,然后每间隔8行插入一张图片
    For j = 3 To Myc Step 1    '横向从第3列(C列)开始插图,然后每间隔1列插入一张图片
        If Cells(i, j) <> "" Then
        Set rng = Cells(i, j).Offset(0, 0)
        With rng
            ML = .Left
            MT = .Top
            MW = .Width
            MH = .Height
            ActiveSheet.Shapes.AddShape(msoShapeRectangle, ML, MT, MW, MH).Select
            Selection.ShapeRange.Fill.UserPicture _
                ".0.0.8文件服务器产品图库" & "" & Cells(i, j).Value & ".jpg"     '当前文件所在目录下以当前单元内容为名称的.jpg图片
        End With
        End If
    Next
    Next
    [a1].Select
    If Err.Number <> 0 Then Err.Clear: On Error GoTo 0
End Sub

Sub 删除全部图片()

Dim shp As Shape
    For Each shp In ActiveSheet.Shapes
        If shp.Type <> 8 And shp.Type <> 12 And shp.Type <> 6 Then shp.Delete
    Next

End Sub


按红色字体参数设置最终插图的区域如下图中灰色框区,参数可以按实际插图的格子分布调整




如果只需要横向或者只需要竖向,只要改里面的参数就行

竖向插图:
Sub 插入图片()
    Dim rng As Range, ML, MT, MW, MH, shp As Shape, Myc%, Myr&, i&, j&
    On Error Resume Next
   
    For Each shp In ActiveSheet.Shapes
        If shp.Type = msoAutoShape Then
            shp.Delete
        End If
    Next
    Myr = [c65536].End(xlUp).Row   '货号所在的列为C,如果不是在C这里自行修改一下
    Myc = [iv9].End(xlToLeft).Column
    For i = 9 To Myr Step 8    '纵向从第9行(行号9)开始插图,然后每间隔8行插入一张图片

        If Cells(i, 3) <> "" Then
        Set rng = Cells(i, 3).Offset(0, 0)
        With rng
            ML = .Left
            MT = .Top
            MW = .Width
            MH = .Height
            ActiveSheet.Shapes.AddShape(msoShapeRectangle, ML, MT, MW, MH).Select
            Selection.ShapeRange.Fill.UserPicture _
                ".0.0.8文件服务器产品图库" & "" & Cells(i, 3).Value & ".jpg"     '当前文件所在目录下以当前单元内容为名称的.jpg图片
        End With
        End If
    Next

    [a1].Select
    If Err.Number <> 0 Then Err.Clear: On Error GoTo 0
End Sub
只要将j参数改成你要插图的列号就行了,这里以第三列插图为例子,然后删除一个j参数的for next循环


横向插图:

Sub 插入图片()

    Dim rng As Range, ML, MT, MW, MH, shp As Shape, Myc%, Myr&, i&, j&

    On Error Resume Next

   

    For Each shp In ActiveSheet.Shapes

        If shp.Type = msoAutoShape Then

            shp.Delete

        End If

    Next

    Myr = [z65536].End(xlUp).Row   '货号所在的列为C,如果不是在C这里自行修改一下

    Myc = [iv3].End(xlToLeft).Column


    For j = 26 To Myc Step 1    '横向从第3列(C列)开始插图,然后每间隔1列插入一张图片

        If Cells(3, j) <> "" Then

        Set rng = Cells(3, j).Offset(0, 0)

        With rng

            ML = .Left

            MT = .Top

            MW = .Width

            MH = .Height

            ActiveSheet.Shapes.AddShape(msoShapeRectangle, ML, MT, MW, MH).Select

            Selection.ShapeRange.Fill.UserPicture _

                ".0.0.118文件服务器产品图库" & "" & Cells(3, j).Value & ".jpg"     '当前文件所在目录下以当前单元内容为名称的.jpg图片

        End With

        End If

    Next


    [a1].Select

    If Err.Number <> 0 Then Err.Clear: On Error GoTo 0

End Sub

从第3行,26列(z列)开始一直往右侧列插图,行数一直在第三行,


再来用公式的
使用公式:<table><img src="图片地址" width="100" height="100">
width控制图片宽度,height控制图片高度


下面案例用到的公式

<table><img src="\10.0.0.118文件服务器电商事业部内部文件H货品产品图库AAAA.jpg" width="100" height="100">

然后SUBSTITUTE($G$1,"AAAA",E6)往下拉

将公式填充到要插图的表格,图片地址自行替换,然后将所有插图公式全选-复制,然后黏贴到记事本,然后再记事本中CTRL+A全选,复制再黏贴回表格,选择性黏贴-粘贴为UNICODE文本。等加载完成就插图成功
看以下动图演示:


三、不插图,只插入图片的超链接,在表格里面点链接打开图片

使用公:=HYPERLINK(LEFT(CELL("filename"),FIND("[",CELL("filename"))-1)&B2&".jpg",B2)

需要注意:EXCEL文件必须和产品图片放在同一个文件夹中

图片.png

顶(13)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论