使用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中显示当前内容仍然可以。我该如何克服这个问题?
答案 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