EXCEL中将图片与单元格对齐

我把我所有要处理的图片都放到EXCEL里面了,想把他们 每列排50个 并 与单元格一样的大小,诚求VBA代码,可以的话稍作解释,谢谢
2026年09月21日 17:52
有2个网友回答
网友(1):

Sub 宏1()
Dim myPIC As Shape
Dim r As Integer, c As Integer
Dim wsf As WorksheetFunction

    r = 1
    c = 1
    
    With ActiveSheet
    For Each myPIC In .Shapes '循环当前工作表中的每个形状
        If Left(myPIC.Name, 7) = "Picture" Then '根据图片形状的默认名称前缀“Picture”,排除其他形状对象
            myPIC.Placement = xlMove '设置形状位置随单元格调整,大小不变
            
            myPIC.Top = .Cells(r, c).Top '将图片顶部与单元格对齐
            myPIC.Left = .Cells(r, c).Left '将图片左侧与单元格对齐
            
            '调整行高为图片宽度
            .Rows(r).RowHeight = IIf(myPIC.Height > .Rows(r).RowHeight, myPIC.Height, .Rows(r).RowHeight)
            
            '调整列宽为图片宽度
            .Columns(c).ColumnWidth = IIf(myPIC.Width * 5 / 28 > .Columns(c).ColumnWidth, myPIC.Width * 5 / 28, .Columns(c).ColumnWidth)
            
            c = c + Int(r / 50) '每50个图片换一列
            r = r Mod 50 + 1 '行号+1,满50归1
        End If
    Next myPIC
    End With
End Sub

网友(2):

Sub test()
i = 0
For Each p In Sheets("Sheet1").Shapes '循环Sheet1中的所有图片,可改为实际工作表名
r = (i Mod 50) + 1 '单元格行号
c = Int(i / 50) + 1 '单元格列号
p.LockAspectRatio = msoFalse '取消固定比例
p.Height = Cells(r, c).Height '图片高度=单元格高度
p.Width = Cells(r, c).Width '图片宽度=单元格宽度
p.Top = Cells(r, c).Top '图片上=单元格上
p.Left = Cells(r, c).Left '图片左=单元格左
i = i + 1
Next
End Sub