我正在尝试创建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代码无法运行。
任何人都有任何想法如何解决这个问题?
答案 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::")