使用VBA(Microsoft Word 2003)使文本段只读

时间:2009-01-05 18:17:54

标签: vba ms-word word-vba

有没有办法使用VBA只读取Microsoft Word 2003文档中的段落?

3 个答案:

答案 0 :(得分:1)

我认为你只能通过选择保护的段落来实现。

下面是一个示例宏,它选择一段文本,启用它进行编辑,然后锁定文档的其余部分。您可以使用IRM或密码保护,下面的宏使用后者。你应该用更优雅的东西替换下面的选择方法

Selection.MoveLeft Unit:=wdCharacter, Count:=11, Extend:=wdExtend 
Selection.Editors.Add wdEditorEveryone
ActiveDocument.protect Password:="password", NoReset:=False, Type:= _
wdAllowOnlyReading, UseIRM:=False, EnforceStyleLock:=False

答案 1 :(得分:0)

您可以通过将要保护的文本放入文本表单并保护它来实现。显然有点粗糙。

答案 2 :(得分:0)

上面的答案会在可编辑区域留下黄色突出显示。

另一种方法是添加此AutoOpen代码 http://answers.microsoft.com/en-us/office/forum/office_2010-word/remove-highlighting-in-editable-areas-of-protected/bfe22585-c5d3-4c19-997f-092fc4aaaa7a

Sub AutoOpen()
   ActiveWindow.View.ShadeEditableRanges = False
End Sub

在Word 2007(已测试)中,更直接的方法是创建富文本内容控件并设置属性。这样可以轻松地将段落设为只读,而不会突出显示。

Sub LockContent()

Dim objCC As ContentControl
Set objCC = ActiveDocument.ContentControls.Add(Type:=wdContentControlRichText)

With objCC
    .Range.Text = "123123" 'Your text
    .LockContentControl = True
    .LockContents = True
End With

End Sub

更多ContentControl.LockContentControl属性 https://msdn.microsoft.com/en-us/library/office/ff835775.aspx

希望这有助于任何有同样头痛的人! :d