Powerpoint中的链接Excel对象在幻灯片放映时不会更新

时间:2012-07-26 03:53:06

标签: excel object linked-list slideshow powerpoint

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

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

问题:

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

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

我在这里找到了一个类似的问题,但是没有回答它会帮助我推进我的问题。

2 个答案:

答案 0 :(得分: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作为Add In安装并在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框说--Trust访问VBA项目对象模型。还可以循环播放幻灯片,以便当它通过幻灯片2或只是节目的开头时,它将更新所有OLE链接。

如果我遗漏了某些内容,请发表评论。 希望这会有所帮助。

答案 1 :(得分: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。