【问题标题】:"method 'add' of object 'SmartArtNodes' failed"“对象‘SmartArtNodes’的方法‘添加’失败”
【发布时间】:2020-05-18 08:57:02
【问题描述】:

我有以下代码在 Excel 中运行,它正在调用 PowerPoint 幻灯片。我正在为 SmartArt 的每个现有节点设置一个文本并且它正在工作。但是,当我使用 AddNode 方法 (oSmartArt.AllNodes.Add.AddNode) 时出现错误。我做错了什么?

Set oSmartArt = d_ppt_output.Slides(SLIDE_SMART).Shapes("MyList").SmartArt

x = 1
While Cells(x, 1).Text <> ""
    If x > oSmartArt.Nodes.Count Then
        oSmartArt.AllNodes.Add.AddNode ''''' ERROR IS HERE!
    End If

    oSmartArt.AllNodes(x).Shapes.TextFrame2.TextRange.Text = ActiveSheet.Cells(x, 2).Text
    x = x + 1
Wend

我也将oSmartArt.AllNodes.Add.AddNode 替换为oSmartArt.Nodes.Add.AddNode,但我遇到了同样的问题。

错误是: -2147467259 (80004005) 对象“SmartArtNodes”的“添加”方法失败

整个代码可以在这里找到 - https://drive.google.com/drive/folders/1_O79iiG7hbBjMHMSH6kZGkWmjN1WGorR?usp=sharing

【问题讨论】:

标签: excel vba powerpoint


【解决方案1】:

正如发布的那样,您的代码没有运行。您不能引用名称不在引号中的幻灯片。我在 PowerPoint 中创建了一个超级简单的版本,它以 5 人 SmartArt 开始。这是运行没有错误。它添加一个新节点并按预期填写文本:

Sub Test()
    Set oSmartArt = ActivePresentation.Slides(1).Shapes(2).SmartArt
    oSmartArt.AllNodes.Add.AddNode
    oSmartArt.AllNodes(6).Shapes.TextFrame2.TextRange.Text = "Wha?"
End Sub

【讨论】:

  • 嗨,约翰!是的,这不是这里的所有代码,但我会发布整个文件。因此,如果我在 PowerPoint 中对此进行编码,它可以工作,但是,我在 Excel VBA 中对其进行编码,这称为 PPT 演示文稿。我可以更改 SmartArt 的文本,但如果我尝试添加会出错。几分钟后我会在这里发布漏洞文件
  • 我在链接上分享了文件。代码在 Excel 文件中,它使用 PPT 模板来构建演示文稿。在代码中,有两个地方需要改路径,我注释了哪里改,然后运行就会报错。另一件事是您必须更改 VBA 的引用以指向您的 PowerPoint 版本 - drive.google.com/drive/folders/…
  • 作为补充,您需要更改名为“Generate”的Sub 中的路径(指向模板和输出目录的路径)。错误发生在子“SB_Gera_Slide_SmartArt”中
猜你喜欢
  • 1970-01-01
  • 2019-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多