【问题标题】:VBA ungroup Shape (SmartArt)VBA 取消组合形状 (SmartArt)
【发布时间】:2017-02-21 13:55:06
【问题描述】:

有谁知道如何通过 VBA 取消组合 SmartArt 元素?

Sub UngroupSmartArt()

Dim shapeWithSmartArt As Shape
Set shapeWithSmartArt = ActivePresentation.Slides(2).Shapes(2)

shapeWithSmartArt.Ungroup

End Sub

我收到此代码的错误: “这个成员只能被一个组访问。”

这对我来说没有任何意义,因为它很容易在 powerpoint 中完成(右键单击 SmartArt -> Group -> Ungroup)。快把我逼疯了:)

谁能帮我取消组合 SmartArt 元素/形状?

我也看过类似的question,但它不能正常工作,因为未分组的结果与通过 powerpoint 本身制作的结果不同。

请帮帮我。我真的很感激任何帮助!

【问题讨论】:

    标签: vba powerpoint


    【解决方案1】:

    通过 VB 代码根本不可能做到这一点。这也是微软的声明。使用 SmartArt 的缺点还在于,用户无法使用宏(使用 Excel)记录在此类对象/元素上执行的任何操作。

    SmartArt节点的宽度或高度属性也无法通过VB改变,这实际上是我想将SmartArt元素更改为形状的原因,因为您可以通过代码轻松更改形状的宽度和高度属性。

    微软和他们的开发者真的应该考虑让 SmarArt 元素对开发者更友好,因为我注意到我不是唯一一个遇到这些问题的人。

    编辑:找到解决方案!有一种方法可以从 powerpoint 功能区执行命令。您需要先选择您的形状,然后执行 CommandBars.ExecuteMso 操作:SmartArtConvertToShapes

    Sub UngroupSmartArt()
    
    Dim shapeWithSmartArt As Shape
    Set shapeWithSmartArt = ActivePresentation.Slides(2).Shapes(2)
    
    shapeWithSmartArt.Select
    CommandBars.ExecuteMso("SmartArtConvertToShapes")
    
    End Sub
    

    这仍然没有改变事实和我的观点:微软真的应该考虑让 SmartArt 元素对开发者更友好!

    【讨论】:

    • 令人惊讶的是,我发现在question 中可以访问更多节点详细信息
    • 我也发现了这个,但是当我尝试设置节点(SmartArt节点)的属性“宽度”时它没有帮助我。这是不可能的。
    • 找到解决方案!
    猜你喜欢
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 2020-04-24
    • 1970-01-01
    相关资源
    最近更新 更多