同时打开编辑和打开密码保护的PowerPoint演示文稿

时间:2019-10-10 10:34:07

标签: c# passwords powerpoint office-interop

我正在尝试找到一种以编程方式打开受开放保护和受编辑保护的演示文稿的方法。
我确实知道如何分别实现一个或后者,但又不能同时实现两个,而不必处理一个要求输入编辑密码的弹出窗口。

要打开受保护的文件:
Presentation presentation = ppApp.Presentations.Open($"{presentationFile}::{password}::", MsoTriState.msoFalse, MsoTriState.msoFalse, WithWindow: MsoTriState.msoFalse);

要打开受编辑保护的文件:
var presentation = ppApp.ProtectedViewWindows.Open($"{presentationFile}", editPassword, MsoTriState.msoFalse);

实际问题:如何打开同时受打开和编辑(已知)密码保护的演示文稿,将其删除并保存演示文稿?”

任何建议都将受到欢迎,谢谢!

1 个答案:

答案 0 :(得分:0)

这两种方法完全不同。

在“受保护的视图”窗口中显示的文件不能被编辑,并且被限制运行诸如Visual Basic for Applications宏和数据连接之类的活动内容。有关保护视图窗口的更多信息,请参见What is Protected View?

ProtectedViewWindows.Open方法允许指定读取密码。它会打开并从ProtectedViewWindow集合中返回一个ProtectedViewWindows对象。 ProtectedViewWindow.Edit方法更改ProtectedViewWindow对象的密码。

由于受保护的视图窗口旨在保护用户免受潜在的恶意代码的侵扰,因此使用Presentation对象返回的ProtectedViewWindow对象可以执行的操作将受到限制。不允许的操作将返回错误。

如果我们谈论受密码保护的文件,则假设您知道密码,则可以使用以下方式打开文件:

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

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

ActivePresentation.Password = "Hide_me"

例如,一个原始草图:

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