如何将 Excel 中的数据粘贴到 PowerPoint 中

How to paste data from Excel into PowerPoint

我从 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行,错误为"the specified value is out of range"。任何人都知道为什么我会收到此错误,以及如何避免它?这是在 Powerpoint 的 VBA 编辑器中,我打开了 ppt 演示文稿

如果您已经打开了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 进行实验。

有些形状没有文本框(lines/connectors/OLE 对象等),因此您想先进行测试。然后该形状可能有一个文本框但其中没有文本,因此您可以对其进行测试。然后你可以将文本范围分配给一个变量:

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