【问题标题】:How to paste data from Excel into PowerPoint如何将 Excel 中的数据粘贴到 PowerPoint 中
【发布时间】:2018-01-19 00:14:24
【问题描述】:

我在 msdn.microsoft.com 网站上发现了一些代码,但在尝试对其进行测试时出现错误。这段代码实际上是他们的示例代码。代码如下:

Sub ReplaceText()

Dim oSld As Slide
Dim oShp As Shape
Dim oTxtRng As TextRange
Dim oTmpRng As TextRange

Set oSld = Application.ActivePresentation.Slides(1)

For Each oShp In oSld.Shapes

    Set oTxtRng = oShp.TextFrame.TextRange
    Set oTmpRng = oTxtRng.Replace(FindWhat:="Name Here", _
        Replacewhat:="TESTTEST", WholeWords:=True)

Next oShp

End Sub

错误出现在Set oTxtRng = oShp.TextFrame.TextRange行,错误为“指定值超出范围”。任何人都知道我为什么会收到此错误,以及如何避免它?这是在 Powerpoint 的 VBA 编辑器中,我打开了 ppt 演示文稿

【问题讨论】:

标签: vba powerpoint


【解决方案1】:

某些形状没有文本框(线条/连接器/OLE 对象等),因此您需要先对其进行测试。然后形状可能有一个文本框架,但里面没有文本,所以你测试一下。然后你可以将文本范围分配给一个变量:

If oShp.HasTextFrame Then
  If oShp.TextFrame.HasText Then
    Set oTxtRng = oShp.TextFrame.TextRange
  End If
End If

【讨论】:

  • 谢谢史蒂夫!我实际上是自己想出来的,但我想最好有答案。也许我应该“回答我自己的问题”。
【解决方案2】:

如果你已经打开了ppt,不要创建而是获取对象。而不是:

Set oPPTApp = CreateObject("PowerPoint.Application")

你应该有

Set oPPTApp = GetObject(, "PowerPoint.Application")

然后,不要打开演示文稿,而是使用已打开且处于活动状态的演示文稿:

Set oPPTFile = oPPTApp.ActivePresentation

如果它只有一张幻灯片,您可以使用以下代码访问其中的形状

Dim sh As PowerPoint.Shape
For Each sh In oPPTFile.Slides(1).Shapes
   'do something with sh
Next sh

您要查找的属性可能是 sh.TextFrame.TextRange.Text,但请使用 Intellisense 进行实验。

【讨论】:

  • 您好,非常感谢您的回答。我认为这绝对是我正在寻找的财产。但是,在尝试对其进行测试时出现错误。我在上面编辑了我的问题以显示我在说什么。如果您对正在发生的事情有任何见解,那将是理想的。谢谢!
  • 我猜你有一些没有文字的形状。您可以使用条件指令 If oShp.TextFrame.HasText Then ... End If 排除没有文字的形状,如徽标或图表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-21
  • 2014-10-15
  • 1970-01-01
  • 2019-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多