【问题标题】:How to Allow VBA Code to Run in Read-Only PowerPoint File?如何允许 VBA 代码在只读 PowerPoint 文件中运行?
【发布时间】:2017-10-27 13:09:35
【问题描述】:

我有一个受密码保护的 PowerPoint 文件,因为坦率地说,与文件交互的操作员是计算机文盲,如果文件可编辑,可能会意外破坏文件。

我应该说,在我更深入之前......我搜索并找到了这个问题,它有一个在这种情况下不起作用的解决方案:Click Me

我编写了一个简单的 VBA 脚本,允许他们搜索部件号,而不是使用 PowerPoint 幻灯片来查找正确的部件号(这可以追溯到不习惯计算机甚至不知道 PowerPoint 是什么)。

无论如何,该脚本在我的计算机上运行良好,但显然我必须输入密码才能编辑 VBA 代码。当我尝试以只读模式运行代码时,出现错误"Run-time error '-2147467259 (80004005)' Presentation (unknown member) : Invalid request. Presentation cannot be modified."

基本上,我看到无法在只读模式下使用文件执行代码。

错误实际发生在这段sn-p的代码中:

'Follow the hyperlink to opent the correct file
    If Len(Dir$(ActivePresentation.Path & "\" & sFile)) > 0 Then
        ActivePresentation.FollowHyperlink Address:=sFile
    Else
        MsgBox "No file exists at path " & ActivePresentation.Path & "\" & sFile
    End If

上线ActivePresentation.FollowHyperlink Address:=sFile

我可以做些什么来以不同的方式打开 pdf 文件,并且演示文稿处于只读模式?

【问题讨论】:

  • 为什么链接的问题/解决方案在这种情况下不起作用?
  • 我无法取消保护工作表,因为它太冒险了。过去,我们的一些员工真诚地试图纠正问题,并最终重新编程直流扭矩工具。我想完全避免有人不小心弄乱文件的混乱和头痛。

标签: vba powerpoint


【解决方案1】:

您无法在不提供密码的情况下打开受密码保护的文件。 要通过提供密码在 VBA 中打开文件,您可以这样做:

设置 oPres = Presentations.Open("c:\temp\open.pptx::pwd::")

其中 c:\temp\open.pptx 是文件的路径,pwd 是密码。

由于这会打开文件,您的同事仍然可以对其进行编辑,因此您可以考虑将真实文件复制到他们的临时文件夹中,可能使用一些不太可能的名称,并打开副本而不是原始文件。然后在他们下次运行任何代码时删除任何现有副本。

【讨论】:

  • 我很难理解为什么它无法打开,因为我打开的是一个单独的文件(pdf 文件)而不是受密码保护的 PowerPoint 文件。 PPT文件打开一次并保持打开状态。
  • 您是否考虑过使用 ShellExecute 来启动 PDF?如果你用谷歌搜索那个加上 VBA,你会找到一些例子。
猜你喜欢
  • 1970-01-01
  • 2018-08-30
  • 2014-11-24
  • 1970-01-01
  • 2016-08-15
  • 1970-01-01
  • 2014-03-16
  • 1970-01-01
  • 2011-12-14
相关资源
最近更新 更多