使MS Word文档“绝对”只读

时间:2018-06-07 17:04:58

标签: vba ms-word

是否可以在vba中将文档设为只读,以防止任何用户对其进行任何更改?

文档对象的保护方法允许您将文档设置为只读,但是一旦用户尝试编辑文档,它就可以访问限制编辑窗格,该窗格允许用户访问“停止保护”按钮。

我想阻止限制编辑窗格出现。

1 个答案:

答案 0 :(得分:0)

虽然似乎无法停止限制编辑"小组开幕。通过添加鼠标钩并在“限制编辑”面板中捕获任何鼠标单击,可以防止用户启用编辑。 Delphi中的代码是

Hdl := WindowFromPoint (Mouse.CursorPos);
GetClassName (Hdl, clsName, 256);
GetWindowText (Hdl, wText, 256);
if (uppercase(clsName) = 'BOSA_SDM_MSWORD') 
and (uppercase(wText)= 'PROTECT DOCUMENT') then {do whatever}

这可以捕获限制编辑面板中的任何点击,并且没有精确定位到"停止保护"按钮。我认为可以进一步向下钻取以明确识别按钮,但在我看来这是不必要的。此外,如果类名或窗口文本发生更改,则函数将失败。

除了笨重而且可能不是未来的证据之外,它确实有效。