VBA:打开(未编辑)时创建只读/受密码保护的Word文档

时间:2019-09-30 21:43:33

标签: excel vba ms-word

我将如何制作一个vba程序,该程序启用只读功能,但在启动时还需要密码才能打开该文档,并且不参考密码,如果处于只读状态,则需要编辑该文档。

每次我使用代码对文档启用“只读”功能时,它都会清除文档中的密码,并且只有只读但可编辑。

wd.SaveAs Filename:="C:\Users\Documents\" & URNa & " - " & URNb & ".docx", Password:=CombinePass, 
ReadOnly=True

1 个答案:

答案 0 :(得分:0)

Word具有两种密码保护:

  • 文件级别
  • 文档级别

SaveAs方法在文件级别起作用。指定密码后,除非提供密码,否则将无法打开文件。

ReadOnlyRecommended参数设置为true可以打开文档,但不能将其保存为相同的名称

因此1)ReadOnlyRecommended并没有达到大多数人的期望,并且2)这两个参数本质上彼此矛盾-不能同时使用。

为了允许打开文件,但确保不能编辑文件内容,有必要在文档级别保护该内容:

wd.Protect(Word.WdProtectionType.wdAllowOnlyReading, Type.Missing, "test", Type.Missing, Type.Missing);

请注意,当在应用保护之前指定了某些部分时,这种保护还允许编辑文档的某些部分。