在vb.net中打开时阻止用户编辑word文件

时间:2018-04-12 05:49:59

标签: vb.net ms-word office-interop

我有一个列出多个Word和Excel文件的应用程序,因此当用户双击一个时,它会打开并可以编辑。我想授予用户编辑权限。

我搜索了很多,到目前为止我想出的是

ProtectedViewWindows.Open(mFolderPath) 
Process.Start(myDocPath)

但它给了我错误:

  

对非共享成员的引用需要对象引用。

3 个答案:

答案 0 :(得分:1)

文档对象提供了Protect方法,该方法带有Protect Type参数,并且从WdProtectionType枚举派生的具有以下保护类型的Type可以考虑防止在Word文档中进行编辑:代码引用取自Protect document code example

  • wdAllowOnlyComments
  • wdAllowOnlyFormFields
  • wdAllowOnlyReading
  • wdAllowOnlyRevisions
  • wdNoProtection

以下是您可能基于保护考虑的代码示例

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)将其应用于打开的文件。