我是新手,基本上我想做的是:
- 我有2个excel文件和1个powerpoint演示文稿 - 所有文件都在共享网络中 - 我将我的excel文件链接到powerpoint - 我有Office 2003和2007版本
问题:
我播放powerpoint的幻灯片并将其设置为在1台计算机上循环显示在工作中的大型LCD上,然后我在另一台计算机上访问excel文件并从那里更新,问题是幻灯片显示正在播放不会自动显示我的更改。我必须手动停止播放并单击幻灯片上的(更新链接)以显示我刚刚输入的更新。
有没有办法让幻灯片显示我在节目中显示更新的数据,我不必手动停止它并点击更新链接。
我在这里找到了一个类似的问题,但是没有回答它会帮助我推进我的问题。
答案 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。