问题描述
我正在尝试使用联合属性将两个相同的形状合并为一个。在编译代码时,它显示对象‘CommandBar’的方法‘ecutemso’失败。我是VBA新手,如果有人能帮我解决这个问题,那就太好了。
Sub ShapesUnion()
Dim sld As Slide
Dim shp As Shape
For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
If shp.Fill.Type = msoFillSolid Then
With shp.Duplicate
.Left = shp.Left
.Top = shp.Top
End With
End If
shp.Select
CommandBars.ExecuteMso ("ShapesUnion")
Next
Next
End Sub
推荐答案
您可以使用MergeShapes
方法来实现:
Dim shp1 As Shape
Dim shp2 As Shape
Set shp1 = ActivePresentation.Slides(1).Shapes.AddShape(msoShapeOval, 100, 100, 50, 50)
Set shp2 = ActivePresentation.Slides(1).Shapes.AddShape(msoShapePie, 100, 100, 50, 50)
Call ActiveWindow.Selection.SlideRange(1).Shapes.Range(Array(shp1.ZOrderPosition, shp2.ZOrderPosition)).MergeShapes(msoMergeCombine)