在PowerPoint中使用VBA实现两个形状合并为联合

人气:852 发布:2022-10-16 标签: vba powerpoint

问题描述

我正在尝试使用联合属性将两个相同的形状合并为一个。在编译代码时,它显示对象‘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)

204