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