我有一个列出多个Word和Excel文件的应用程序,因此当用户双击一个时,它会打开并可以编辑。我想授予用户编辑权限。
我搜索了很多,到目前为止我想出的是
ProtectedViewWindows.Open(mFolderPath)
Process.Start(myDocPath)
但它给了我错误:
对非共享成员的引用需要对象引用。
答案 0 :(得分:1)
文档对象提供了Protect方法,该方法带有Protect Type参数,并且从WdProtectionType枚举派生的具有以下保护类型的Type可以考虑防止在Word文档中进行编辑:代码引用取自Protect document code example
以下是您可能基于保护考虑的代码示例
oDocument.Protect(WdProtectionType.wdAllowOnlyReading,vbNull,"password")
答案 1 :(得分:0)
此错误消息表示Open
类中ProtectedViewWindows
不是共享函数,因此您必须在调用ProtectedViewWindows
之前创建Open
对象在它上面。
类似的东西:
Dim pvw As ProtectedViewWindows = New ProtectedViewWindows
pvw.Open(mFolderPath)
Process.Start(myDocPath)
也许ProtectedViewWindows
的构造函数需要一个或多个参数。
答案 2 :(得分:0)
ProtecfedViewWindow
不是您应该用来阻止用户编辑文档的内容。这是Office应用程序内置的功能,用于打开来自不受信任来源的文档。 Excel language reference中的解释在这一点上有点清楚;您可能还想阅读What is Protected View。
因此,您隐含问题的答案是:您无法使用对象模型的这一部分做您想做的事情。
Word和Excel都不是设计用作" Reader" - 他们是编辑。如果您希望用户只阅读,那么您需要查找阅读器。例如,将文件保存为PDF格式,以便在Acrobat Reader中打开。
FWIW可以使用各自的保护机制保护Word和Excel文件的全部或部分内容。必须使用对象模型(或通过编辑已关闭文件的Open XML)将其应用于打开的文件。