如何在 PowerPoint 中使用 VBA 打开嵌入的 OLE 对象

Posted

技术标签:

【中文标题】如何在 PowerPoint 中使用 VBA 打开嵌入的 OLE 对象【英文标题】:How to use VBA in PowerPoint to open an embedded OLE object 【发布时间】:2014-05-31 13:54:10 【问题描述】:

我认为这是一个简单的问题,但我花了几天时间寻找答案,但还没有。

我在 PowerPoint 演示文稿中嵌入了一个 OLE 对象(使用 PPT 2010 创建)。我通过插入>对象>从文件创建>显示为图标方法嵌入了它(一个pdf文件),以便它在幻灯片上显示为一个小图标。

我的目标是在单击形状时打开它,其中形状与 pdf 所在的幻灯片位于不同的幻灯片上。 pdf 在幻灯片 5 上,触发器形状在幻灯片 6 上。目标是在幻灯片查看期间打开它(出于其他原因,必须通过 VBA 而不是动画来完成)。

我认为以下方法会起作用:

Sub OpenMyDoc()
  ActivePresentation.Slides(5).Shapes("My Doc").OLEFormat.DoVerb(1)
End Sub

我已通过 insert>links 方法将该宏指定为单击“操作”。

我也尝试了以下变体,但没有成功(当我点击触发形状时根本没有任何反应):

ActivePresentation.SlideShowWindow.View.Slide.Shapes("My Doc").OLEFormat.DoVerb(1)

我也试过了:

With SlideShowWindows(1).Presentation.Slides(5).Shapes("My Doc")
  OLEFormat.DoVerb(1)
End With

我也试过了:

ActivePresentation.Slides.Item(5).Shapes.Item("My Doc").OLEFormat.DoVerb(1)

演示文稿中的其他宏(主要是消息框)以及同一张幻灯片上的工作,所以我确定这不是权限或其他设置问题。 我正在使用母版幻灯片,但似乎无法找到问题所在。

【问题讨论】:

【参考方案1】:

您在运行代码时可能会看到一条错误消息;错误消息解释了这个问题,虽然有点微软神秘的方式。您只能从幻灯片或备注视图中激活 OLE 对象。

相反,您可以这样做:

ActivePresentation.Slides(1).Shapes(4).ActionSettings(1).Hyperlink.Follow

Shapes(4) 超链接到您要启动的 PDF。

[编辑]

但由于超链接不是一个选项,而且您必须在幻灯片视图中才能激活嵌入的对象,所以这里可以:

' 激活演示窗口 ' 您可能需要确保它在正常视图中 ActivePresentation.Windows(1).激活

' 启动 OLE 对象: ActivePresentation.Slides(1).Shapes(1).OLEFormat.DoVerb (1)

' 并立即切换回幻灯片放映视图 SlideShowWindows(1).激活

【讨论】:

感谢史蒂夫的回复。我没有看到代码的错误消息。我的理解是幻灯片视图中发生的错误不会出现。所以我对这个问题视而不见,但如果你对此有任何建议,那就太好了。我尝试了您的建议,但是(1)我不知道如何超链接到嵌入式 OLE 对象,以及(2)当我尝试使用指向本地文件的超链接时它仍然无法正常工作(再次,没有可见的错误消息)。 你不会超链接到嵌入的对象;你会超链接到外部文件。奇怪的是,我都在这里使用您的代码看到了一条错误消息,并且使用我的代码让它按预期工作。检查您的信任设置;您可能禁用了外部文件链接。在这里,在启动超链接文件之前,我收到了一条令人讨厌的“您确定要执行此操作”消息。 再次感谢史蒂夫,但是对于文件的设置方式,我需要使用嵌入对象,而不是外部文件,因此超链接似乎不起作用。此外,您能否确认在幻灯片视图期间收到错误消息?我看到很多消息来源说幻灯片视图不会像在普通视图中(或在其他办公应用程序中使用 VBA 时)那样产生错误消息。 好的,我可以理解为什么超链接可能不被接受。但我可以在幻灯片查看期间确认错误消息(“OLEFormat(未知成员):无效请求。窗口必须在幻灯片或注释视图中。”您看到的消息来源可能指的是错误/错误代码的事实不会在幻灯片视图中产生编译错误,我很确定这是正确的。但是请参阅我即将发布的新答案。 史蒂夫,你是我的新主人和救世主!这非常有效,而且非常简单。谢谢。

以上是关于如何在 PowerPoint 中使用 VBA 打开嵌入的 OLE 对象的主要内容,如果未能解决你的问题,请参考以下文章

使用 VBA 将 Excel 中的图表嵌入到 Powerpoint 中的指定占位符中

使用 VBA 将 Excel 图表粘贴到 Powerpoint 中

PowerPoint VBA:如何将动画开始事件设置为“ With Previous”

如何正确格式化项目符号和缩进 - Powerpoint VBA

如何将单元格区域作为表格从 Excel 复制到 PowerPoint - VBA

Powerpoint 文件的 VBA SaveAs 方法存在问题