【发布时间】:2014-03-16 15:57:03
【问题描述】:
我正在尝试创建 PowerPoint 幻灯片的免费不可编辑版本,以演示如何使用 VBA 使幻灯片变得非常动态。幻灯片是一个交互式秒表,这里有一段视频:
http://i-present.co.uk/free-stuff/free-powerpoint-stopwatch/
VBA 用于根据 Windows API 计时器修改幻灯片上的各种形状。
在免费版本中,我希望 VBA 功能运行,但设置演示文稿以便无法编辑幻灯片对象。
这是我迄今为止尝试过的:
1 - 在文件的 ppsm 版本上设置修改密码。 问题:当演示文稿以只读模式打开时,VBA 无法修改幻灯片上对象的属性。
2 - 使用 VBA 保存文件的临时写入版本。 问题:一旦以只读方式打开演示文稿,似乎无法使用 VBA 提供密码然后保存为可修改的文件。
3 - 创建一个单独的 ppsm 文件,上面有一个单一的形状,并带有一个操作来运行宏以打开受密码保护的秒表卡组。 问题:用于打开受密码保护的演示文稿的 VBA 代码(自 PowerPoint 2010 起可用)导致 PowerPoint 2013 崩溃:
Dim oPVW As ProtectedViewWindow
Dim oPres As Presentation
Set oPVW = ProtectedViewWindows.Open(FileName, ReadPassword)
Set oPres = PVW.Edit(ModifyPassword)
4 - 将秒表 ppsm 文件作为幻灯片对象嵌入到另一个演示文稿中,以便用户可以单击它但不能保存和编辑它。 问题:从嵌入对象生成幻灯片会导致 VBA 代码无法运行。
有没有人知道如何解决这个需求?
【问题讨论】:
-
7 年后,我在玩弄这段代码并得出结论认为 MS 帮助页面是错误的。将 ProtectedViewWindows.Edit 与 ModifyPassword 一起使用不会重置密码,它会提供密码以允许修改。提供密码后,ActivePresentation 关键字开始对文件进行更改。保存并关闭文件后仍有原来的修改密码。
标签: vba powerpoint