Vba 如何在PowerPoint中访问SmartArt中的非节点项目?

Vba 如何在PowerPoint中访问SmartArt中的非节点项目?,vba,powerpoint,Vba,Powerpoint,我有一个过程,当我在一个更大的Sub中偶然发现SmartArt时,我会调用该过程,该过程会改变整个演示文稿的校对语言: Sub DealWithSmartArts(shp As Shape, lang As Long) Dim saNode As SmartArtNode For Each saNode In shp.SmartArt.AllNodes saNode.TextFrame2.TextRange.LanguageID = lang Next s

我有一个过程,当我在一个更大的Sub中偶然发现SmartArt时,我会调用该过程,该过程会改变整个演示文稿的校对语言:

Sub DealWithSmartArts(shp As Shape, lang As Long)
    Dim saNode As SmartArtNode
    For Each saNode In shp.SmartArt.AllNodes
        saNode.TextFrame2.TextRange.LanguageID = lang
    Next saNode
End Sub

但是,有些布局(例如交替六边形)具有“装饰性”形状-这些不是节点,但它们可以承载文本,并且可以具有校对语言集。有一个VBA表达式可以找到它们吗?

很小的安慰,但我可以确认您的结果。在我看来,这是一个bug,我看不到任何其他方法可以在没有文本的情况下到达节点。谢谢。这不是什么大问题,但它困扰着我。一定有办法的,对吧?不,不一定。VBA对象模型涵盖了大多数程序操作,但仍有遗漏的项,如发现的节点。当我想更改演示文稿的语言时,我将其解压缩,并使用记事本++对文件运行查找和替换。使用Jan Karel Pieterse的OpenXML类以编程方式实现这一点是可能的。这是Excel的免费下载,但可以在PowerPoint中使用。这个类将解压文件,然后您可以进行编程查找和替换,然后使用该类重新压缩。谢谢,我会看一看,但到目前为止,VBA通过可用的对象模型元素循环,这似乎足够了。然而,在这方面我确实看到了很多有趣的东西需要学习(我几乎没有编程经验,我宁愿重复使用和调整我发现的东西,但我很快就学会了)