幻灯片显示处于活动状态时设置SmartArt文本

时间:2019-02-15 18:22:08

标签: vba powerpoint powerpoint-vba

使用PowerPoint 2016,我正在编写一个宏,该宏允许用户使用UserForms和TextBoxes在实时演示文稿中输入数据。效果很好,除非我尝试在SmartArt中显示文本。以下宏说明了该问题:

Sub writeToSmartArt()
    Dim artShape As Shape
    Set artShape = ActivePresentation.Slides(maalSlide).Shapes("Diagram")
    MsgBox artShape.SmartArt.Nodes(1).Nodes(1).TextFrame2.TextRange.Text
    artShape.SmartArt.Nodes(1).Nodes(1).TextFrame2.TextRange.Text = "testing" 
End Sub

该子项将SmartArt形状设置为artShape变量,然后首先打印出MsgBox中指定节点的内容。在下一步中,我将text属性设置为新值。只要演示文稿未处于活动状态,一切都可以正常工作。我能够手动运行该子程序,并且一切正常。但是,当幻灯片正在运行时,尝试写入SmartArt节点时出现以下错误消息:

    Run-time error '-2147467259 (80004005)':
    Method 'Text' of object 'TextRange2' failed

在MsgBox中显示当前内容仍然可以。我该如何克服这个问题?

2 个答案:

答案 0 :(得分:0)

不确定在幻灯片放映模式下为什么会出现错误。但是,一种解决方法是使用节点的Shape()方法而不是节点本身来直接访问形状,例如:artShape.SmartArt.Nodes(1).Nodes(1).Shapes(1).TextFrame2.TextRange.Text = "testing"。希望这会有所帮助!

答案 1 :(得分:0)

我遇到了同样的问题,因此我改用SmartArt.AllNodes(),而改用SmartArt.Nodes()。

示例:

ppt_output.Slides(SLIDESMART).Shapes("TheList").SmartArt.AllNodes(1).Shapes.TextFrame2.TextRange.Text