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

时间:2014-05-31 13:54:11

标签: vba powerpoint

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

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

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

我认为以下内容可行:

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

我已将该宏指定为点击"操作"通过插入>链接方法。

我也尝试过以下变化,没有运气(当我点击触发形状时根本没有任何反应):

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 个答案:

答案 0 :(得分:2)

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

相反,你可以这样做:

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

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

[编辑]

但由于超链接不是一个选项,并且因为你必须在幻灯片视图中激活嵌入对象,所以这可以在这里工作:

'激活演示文稿窗口 '你可能需要确保它在普通视图中 ActivePresentation.Windows(1).Activate

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

'然后立即切换回幻灯片放映视图 SlideShowWindows(1).Activate