如下图所示为ppt幻灯片中已有的一个椭圆形:

现在希望快速地在当前幻灯片中插入一个75个同尺寸大小的椭圆形,如下图所示排列:

这是一个典型的根据已有图形插入一个N×M型图形的问题
可以使用如下的vba通用代码:
Sub QQ1722187970()
Dim oPPT As Presentation
Dim oSlide As Slide
Dim oOldShape As Shape
Dim oNewShape As Shape
'当前ppt演示文稿
Set oPPT = PowerPoint.ActivePresentation
With oPPT
'在第一个幻灯片上操作
Set oSlide = .Slides(1)
With oSlide
'总共80个
iTotalNum = 75
'每行放10个
iPerNum = 10
'已有图形的名称为Num1
Set oOldShape = .Shapes("Num1")
'先设置已有图形的尺寸
With oOldShape
.Width = 20
.Height = 20
End With
For i = 1 To iTotalNum - 1
sName = "Num" & i + 1
'插入新的椭圆
Set oNewShape = .Shapes.AddShape(msoShapeOval, 0, 0, 0, 0)
With oNewShape
.Name = sName
'长宽一样
.Width = oOldShape.Width
.Height = oOldShape.Height
'左边依次递增,此处的10为图形之间的横向间隔
.Left = oOldShape.Left + (oOldShape.Width + 10) * (i Mod iPerNum)
'上下依次递增,此处的5为图形之间的上下间隔
.Top = oOldShape.Top + (oOldShape.Height + 5) * Int(i / iPerNum)
End With
Next i
End With
End With
End Sub


发表评论