【问题标题】:Make text paragraph readonly using VBA (Microsoft Word 2003)使用 VBA (Microsoft Word 2003) 将文本段落设为只读
【发布时间】:2010-09-29 15:57:49
【问题描述】:

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

【问题讨论】:

    标签: vba ms-word


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      您可以通过将要保护的文本放入文本表单并对其进行保护来做到这一点。显然有点恶心。

      【讨论】:

        【解决方案3】:

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

        另一种方法是添加此 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 属性 on https://msdn.microsoft.com/en-us/library/office/ff835775.aspx

        希望这可以帮助任何有同样头痛的人! :D

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-06-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多