如何在ppt中用vba实现图形的布尔运算?

布尔运算是数字符号化的逻辑推演法,包括联合、相交、相减。

在图形处理操作中引用了这种逻辑运算方法以使简单的基本图形组合产生新的形体,并由二维布尔运算发展到三维图形的布尔运算。

在PPT幻灯片中,当选中2个以上(含2个)图形时,在“绘图工具”选项下的“格式”下的“插入形状”组中可以使用“合并形状”命令实现图形的布尔运算,如下图所示:

接下来,解释各个“合并形状”命令的具体效果:

  1. 结合(Union):把几个图形变成一个,保留公共部分,如下图所示:
  2. 组合(Combine):把几个图形变成一个,删除公共部分,如下图所示:
  3. 拆分(Fragment):把几个图形沿公共部分的轮廓拆开,如下图所示:
  4. 相交(Intersect):保留几个图形中的公共部分,如下图所示:
  5. 剪除(Subtract):只保留第一个图形,并将第一个图形和其余图形的的公共部分全部删除,如下图所示:

在vba中,如果要实现图形的以上5种布尔运算,需要先构造ShapeRange对象,然后使用ShapeRange对象的MergeShapes方法。

其中MergeShapes方法的语法如下:

MergeShapes(MergeCmd, PrimaryShape)

MergeCmd参数为以上的5个类型,分别为

    1. 结合(msoMergeUnion)
    2. 组合(msoMergeCombine)
    3. 拆分(msoMergeFragment)
    4. 相交(msoMergeIntersect)
    5. 剪除(msoMergeSubtract)

PrimaryShape参数为执行布尔运算后的图形要源用哪个图形的格式。

以下代码举例说明了如何用vba将第一张幻灯片的两个图形进行布尔运算:

Sub QQ1722187970()
    Dim oPPT As Presentation
    Dim oSlide As Slide
    Dim oSP As Shape
    Dim oSPR As ShapeRange
    Set oPPT = PowerPoint.ActivePresentation
    With oPPT
        Set oSlide = .Slides(1)
        With oSlide
            Set oSP = .Shapes(1)
            '将两张图形构造成ShapeRange
            Set oSPR = .Shapes.Range(Array(1, 2))
            With oSPR
                '布尔运算
                .MergeShapes msoMergeSubtract, oSP
            End With
        End With
    End With
End Sub

 

       

发表评论