Powerpoint Kiosk VBScript更新程序

Powerpoint Kiosk VBScript更新程序,vbscript,powerpoint,Vbscript,Powerpoint,使用脚本编写人员的脚本,我试图创建一个简单的演示更新程序 场景: 安装在大屏幕电视背面的Windows XP Pro。它共享一个文件夹“C:\share”,用户连接到该文件夹并更新power point演示文稿“Master.ppsx”。电脑查看C:\share以查看是否有“Master.ppsx”的更新版本(如果有) 关闭当前演示文稿 将“Master.ppsx”从“c:\share”复制到“c:\presentations” 在“c:\presentations”中显示新演示文稿 出错时

使用脚本编写人员的脚本,我试图创建一个简单的演示更新程序

场景:
安装在大屏幕电视背面的Windows XP Pro。它共享一个文件夹“C:\share”,用户连接到该文件夹并更新power point演示文稿“Master.ppsx”。电脑查看C:\share以查看是否有“Master.ppsx”的更新版本(如果有)

  • 关闭当前演示文稿
  • 将“Master.ppsx”从“c:\share”复制到“c:\presentations”
  • 在“c:\presentations”中显示新演示文稿
出错时继续下一步

Const ppAdvanceOnTime = 2   ' Run according to timings (not clicks)
Const ppShowTypeKiosk = 3   ' Run in "Kiosk" mode (fullscreen)
Const ppAdvanceTime = 5     ' Show each slide for 10 seconds

' Open the two power point files to work with them.
Set objFileSys = CreateObject("Scripting.FileSystemObject")
Set CurrentPPT = objFileSys.GetFile("c:\presentations\Master.pptx")
Set NewPPT = objFileSys.GetFile("c:\share\Master.pptx")

' Open the shell object for passing commands.
Set objShell = CreateObject("WScript.Shell")

Set objPPT = CreateObject("PowerPoint.Application")
objPPT.Visible = True

Set objPresentation = objPPT.Presentations.Open(currentPPT.Path)

' Apply powerpoint settings
objPresentation.Slides.Range.SlideShowTransition.AdvanceOnTime = TRUE
objPresentation.SlideShowSettings.AdvanceMode = ppAdvanceOnTime 
objPresentation.SlideShowSettings.ShowType = ppShowTypeKiosk
objPresentation.Slides.Range.SlideShowTransition.AdvanceTime = ppAdvanceTime
objPresentation.SlideShowSettings.LoopUntilStopped = True

' Run the slideshow
Set objSlideShow = objPresentation.SlideShowSettings.Run.View

Do Until Err <> 0

    If NewPPT.DateLastModified > CurrentPPT.DateLastModified Then
        objPresentation.Close
        objFileSys.CopyFile NewPPT, CurrentPPT, True
        Set objSlideShow = objPresentation.SlideShowSettings.Run.View

    End If

Loop

objPresentation.Saved = False
objPresentation.Close
objPPT.Quit
Const ppAdvanceOnTime=2'根据计时运行(不是单击)
Const ppShowTypeKiosk=3'在“Kiosk”模式下运行(全屏)
Const ppAdvanceTime=5'显示每张幻灯片10秒
'打开两个power point文件以使用它们。
设置objFileSys=CreateObject(“Scripting.FileSystemObject”)
设置CurrentPPT=objFileSys.GetFile(“c:\presentations\Master.pptx”)
设置NewPPT=objFileSys.GetFile(“c:\share\Master.pptx”)
'打开shell对象以传递命令。
设置objShell=CreateObject(“WScript.Shell”)
设置objPPT=CreateObject(“PowerPoint.Application”)
objPPT.Visible=True
设置objPresentation=objPPT.Presentations.Open(currentPPT.Path)
'应用powerpoint设置
objPresentation.Slides.Range.SlideShowTransition.AdvanceOnTime=TRUE
objPresentation.SlideShowSettings.AdvanceMode=ppAdvanceOnTime
objPresentation.SlideShowSettings.ShowType=ppShowTypeKiosk
objPresentation.Slides.Range.SlideShowTransition.AdvanceTime=PPAAdvanceTime
objPresentation.SlideShowSettings.LoopUntilStopped=True
'运行幻灯片放映
设置objSlideShow=objPresentation.SlideShowSettings.Run.View
直到错误0为止
如果NewPPT.DateLastModified>CurrentPPT.DateLastModified,则
对象表示。关闭
objFileSys.CopyFile NewPPT,CurrentPPT,True
设置objSlideShow=objPresentation.SlideShowSettings.Run.View
如果结束
环
objPresentation.Saved=False
对象表示。关闭
退出
If/Then语句是当前正在中断的内容。它将关闭正在演示的powerpoint,并复制新演示文稿。。。但是当它呈现新的幻灯片时,脚本就消失了

2015年编辑-在下面为有问题的人完整添加当前解决方案。目前在Win 7 Pro x64上运行。PowerPoint 2010。我还可以在powerpoint演示并循环一次后将其最小化,当一个网页被查看一段时间后,powerpoint会再次循环

选项显式
' ============================================================================
'标题:updateptx.vbs
更新日期:2015年4月9日
'目的:更新并演示在休息室演示亭上运行的powerpoint演示文稿
参考:资料来源:http://blogs.technet.com/b/heyscriptingguy/archive/2006/09/05/how-can-i-run-a-powerpoint-slide-show-from-a-script.aspx
'脚本改编自上面的脚本人博客。
' ============================================================================
'设置控制Powerpoint行为的常量
Public Const ppAdvanceOnTime=2'使用预设计时器而不是单击进行提前。
公共常数ppShowTypeKiosk=3'在“Kiosk”模式下运行(全屏)
Public Const PPAAdvanceTime=20'每张幻灯片显示的时间量(秒)。
Public Const ppSlideShowPointerType=4'隐藏鼠标光标
Public Const ppSlideShowDone=5'完成时的幻灯片放映状态。
'文件系统操作
公共objFileSys“作为对象”用于处理文件系统中的文件。
Public CurrentPPT“作为对象”用于存储当前演示文稿powerpoint
Public NewPPT“作为对象”用于存储新的演示文稿powerpoint
'用于Powerpoint操作的对象。
Public objSlideShow“作为对象”显示当前的幻灯片放映。
公共对象表示“作为对象”当前powerpoint打开
公共对象“作为对象”Powerpoint应用程序
'其他windows对象。
用于批量编写gbmailer通知脚本的公共objShell“作为对象”
用于控制Internet Explorer位置的公用objExplorer“作为对象”
'打开两个powerpoint文件以使用它们。
设置objFileSys=CreateObject(“Scripting.FileSystemObject”)
设置CurrentPPT=objFileSys.GetFile(“C:\Utilities\updateptx\Presentation\Master.pptm”)
设置NewPPT=objFileSys.GetFile(“C:\Utilities\updateptx\Share\Master.pptm”)
'打开shell对象以传递命令。
设置objShell=CreateObject(“WScript.Shell”)
设置objPPT=CreateObject(“PowerPoint.Application”)
objPPT.Visible=True
如果出现错误,则“下一步”退出循环以完全关闭。
直到出现错误0为止
'比较这两个文件以查看是否已上载新版本。
如果NewPPT.DateLastModified>CurrentPPT.DateLastModified,则
如果用户在上传的中间,等待文件完全复制到共享
WScript.Sleep(5000)
'获取最新的powerpoint并演示它。
CopyNew()
通知()
如果结束
现在()
ShowIE()
环
'清除内存并退出
objPresentation.Saved=True
objSlideShow.Exit
对象表示。关闭
退出
objPPT=无
objPresentation=无
objSlideShow=无
WScript.Quit
' =============================================
"功能",
' =============================================
' =============================================
'CopyNew-将更新的演示文稿移到演示文稿文件夹。
' =============================================
子副本新()
Dim pptFileName“as String”保存历史文件的文件名。
'从C:\Utilities\UpdatepTX复制powerpoint\
If NewPPT.DateLastModified > CurrentPPT.DateLastModified Then
    objPresentation.Close
    objFileSys.CopyFile NewPPT, CurrentPPT, True
    Set objSlideShow = objPresentation.SlideShowSettings.Run.View