如何为修改密码保护的只读PowerPoint文件提供VBA访问?

时间:2014-02-17 11:19:00

标签: vba powerpoint powerpoint-vba

我正在尝试创建PowerPoint幻灯片的免费不可编辑版本,演示如何使用VBA使幻灯片非常动态。幻灯片是一个交互式秒表,这里有一个视频:

http://i-present.co.uk/free-stuff/free-powerpoint-stopwatch/

VBA用于根据Windows API计时器修改幻灯片上的各种形状。

在免费版本中,我希望运行VBA功能,但设置了演示文稿,以便无法编辑幻灯片对象。

这是我到目前为止所尝试的:

1 - 在文件的ppsm版本上设置修改密码。 问题:在只读模式下打开演示文稿时,VBA无法修改幻灯片上对象的属性。

2 - 使用VBA保存文件的临时写入版本。 问题:一旦演示文稿以只读方式打开,似乎无法使用VBA提供密码,然后另存为可修改的文件。

3 - 创建一个单独的ppsm文件,其上有一个单一的形状,有一个Action来运行一个宏来打开密码保护的秒表牌组。 问题:用于打开受密码保护的演示文稿的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代码无法运行。

任何人都有任何想法如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

好吧,Mr.ChromeBumpers

一种方法:

让他们根据内心的内容编辑形状。但警告他们,如果他们这样做,你的代码就会拒绝运行。

您的代码可以测试您喜欢的形状属性的任意组合:高度,宽度,顶部,左侧,颜色,文本等。如果这些属性中的一个已经从您提供的形状改变,则拒绝运行。

答案 1 :(得分:0)

以下是Excel中用于打开受密码保护的PowerPoint文件的代码。 将密码替换为您的实际密码。这已经在2010年,2016年和365办公室工作。

Dim PPTObj As Object
Set PPTObj = CreateObject("PowerPoint.application")
PPTObj.Presentations.Open ("C:\PowerPoint\PW_prot_file.pptm:password::")