【问题标题】:VBA code to unprotect a opened powerpoint presentation, then protect it again before saving it?VBA代码取消保护打开的PowerPoint演示文稿,然后在保存之前再次保护它?
【发布时间】:2017-12-29 07:02:38
【问题描述】:

我保护了一个 power point 演示文稿不让用户修改它。但是我不能使用 VBA 来取消保护它。

我尝试在下面使用此代码,但它不起作用。它仅适用于未受保护的演示文稿。但是您必须从代码中删除密码。

set p = pa.presentations.open(pth + pptname, pw)

【问题讨论】:

  • 我不认为有任何方法可以通过 VBA 做到这一点,即使是从 Powerpoint 本身。 presentations.open 没有接受密码的参数。
  • 如果 PowerPoint 已经打开了。有点像excel。将 j 设置为此演示文稿,然后设置 j.password = pw 等。我累了,但演示文稿对象没有密码。只是说或类似的话。
  • 在 PowerPoint VBA 中做,并让 excel VBA 调用 PowerPoint VBA 怎么样?
  • “我不认为有任何方法可以通过 VBA 做到这一点,即使是通过 Powerpoint 本身”没有内置函数可以做到这一点。您可以找到各种解决方法 - 例如。 gallery.technet.microsoft.com/office/…

标签: vba powerpoint password-protection presentation


【解决方案1】:

假设您知道密码,您可以使用以下内容打开文件:

Presentations.Open("c:\temp\protected_presentation.pptx::password::")

并在演示文稿上设置密码,例如:

ActivePresentation.Password = "Hide_me"

[编辑以添加一个完整的测试工作示例,假设演示文稿 C:\temp\testtest.pptx 已使用密码 opensesame 保存]

Sub TestTest()

    Dim oPPTApp As Object
    Dim oPPTPres As Object

    Set oPPTApp = CreateObject("PowerPoint.Application")

    If Not oPPTApp Is Nothing Then
        Set oPPTPres = oPPTApp.presentations.Open("C:\temp\test.pptx::opensesame::")
        MsgBox oPPTPres.slides(1).Shapes(1).TextFrame.TextRange.Text
        oPPTPres.Close
        oPPTApp.Quit
    End If
End Sub

【讨论】:

  • 好的,谢谢。我要试一试,看看它是否有效。 :)
  • 我试过了,但没有成功。演示文稿受密码保护时打开的第一个代码,演示文稿会要求我输入密码才能继续。第二个代码只是抛出错误消息“ActiveX 组件无法创建对象”。
  • 第一个代码:set p = pa.presentations.open(path + pptname + "::pw::")。 P 是演示文稿,pa 是 pptx 应用程序,path 是 pptx 所在的位置,pptname 是演示文稿名称,pw 是演示文稿密码。在代码继续之前,我被要求输入密码。
  • 使用 & 代替 + 进行字符串连接(不知道在这种情况下是否会有所不同,但这是基本的好习惯)。并尝试连接到一个中间变量,然后将变量传递给 Presentations.Open
  • 由于您没有按要求向我们展示您的代码,我在原始回复中添加了一个示例。如果您仍然不显示不工作的代码并准确解释“不工作”的含义以及它在哪一行失败,那么没有任何人可以提供帮助。
猜你喜欢
  • 2020-02-07
  • 2019-11-25
  • 1970-01-01
  • 1970-01-01
  • 2023-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多