0

我是新手,基本上我想做的是:

-我有 2 个 excel 文件和 1 个 powerpoint 演示文稿 -所有文件都在共享网络中 -我将我的 excel 文件链接到 powerpoint -我有 office 2003 和 2007 版本

问题:

我播放 powerpoint 的幻灯片并将其设置为在一台计算机上循环播放以在工作时在大 LCD 上显示它,然后我在另一台计算机上访问 excel 文件并从那里更新它,问题是正在播放的幻灯片不会自动显示我的更改。我必须手动停止显示并单击幻灯片上的(更新链接)以显示我刚刚输入的更新。

有没有办法让幻灯片在节目中显示我更新的数据,而我不必手动停止它并单击更新链接。

我在这里发现了一个有点相似的问题,但没有回答到可以帮助我推进我的问题的地步。

4

2 回答 2

1

我已经使用此代码解决了上述问题

Sub OnSlideShowPageChange(ByVal SSW As SlideShowWindow)
    If SSW.View.CurrentShowPosition = 2 Then
        ActivePresentation.UpdateLinks
    End If
End Sub

假设我在节目中有 2 张幻灯片,当在幻灯片 2 上传递时,它将触发更新链接并使用更新的 OLE 链接循环回幻灯片 1。我花了很多时间才读到这一部分,但是当我开始演出时,我无法让它运行。我必须手动按 alt+F8 并单击运行,这样代码就会在每张幻灯片 2 中循环播放。

编辑:终于让它工作而无需运行一次宏。我只是打开PowerPoint并播放节目。当节目通过幻灯片 2 或刚刚开始时,更新会动态更新。现在有一些仍然没有解决这个问题的方法,希望这对你有帮助。

我使用了在http://skp.mvps.org/autoevents.htm找到的 autoevent.zip 。我将 zip 中包含的 AutoEvents.ppa 作为插件安装并在 PPT2007 和 PPT2003 中激活它。然后使用此代码创建一个普通的模块/宏。

Sub Auto_ShowBegin()
ActivePresentation.UpdateLinks
End Sub
Sub OnSlideShowPageChange(ByVal SSW As SlideShowWindow)
'
' AUTO UPDATE OF OLE LINKS MACRO
'
    If SSW.View.CurrentShowPosition = 2 Then
        ActivePresentation.UpdateLinks
    End If
End Sub

你完成了。请确保您以启用宏的格式保存 2003 和 2007 的 powerpoint,这是因为我有两个版本的 ms office。并勾选 ckeck 框说 - 信任对 VBA 项目对象模型的访问。还循环播放您的幻灯片,以便当它通过幻灯片 2 或刚刚开始放映时,它将更新所有 OLE 链接。

如果我错过了什么,请发表评论。希望这可以帮助。

于 2012-07-27T01:53:53.537 回答
0

我认为您需要为此编写代码。

在您的演示文稿中添加一个新的类模块并将其命名为“clsEvents”。添加此代码:

Public WithEvents PPTEvent As Application

Sub PPTEvent_SlideShowNextSlide(ByVal Wn As SlideShowWindow)
   Dim objSld As Slide, shp As Shape

   Set objSld = Wn.Presentation.Slides(Wn.View.CurrentShowPosition)

   For Each shp In objSld.Shapes
      If shp.Type = msoLinkedOLEObject Then
         shp.LinkFormat.Update
      End If
      Next shp

End Sub

在普通模块中放置:

Dim app As clsEvents

Sub SetUpEvents()

    Set app = New clsEvents
    Set app.PPTEvent = Application

End Sub

在开始幻灯片放映之前运行 setupevents。

于 2012-07-26T07:02:35.503 回答