微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Word 2016-如何在受保护的文档VBA中复制/粘贴选定的RTF内容控件?

如何解决Word 2016-如何在受保护的文档VBA中复制/粘贴选定的RTF内容控件?

下面的以下代码可成功创建标题为“常规”的父节。但是,我有以下问题:

  1. 在文档受保护的情况下,如何在父部分(或当前选定的部分)之后(下方)插入一个附加部分并对其进行循环,以便可以添加任意数量的部分? (父节以编号列表“ A.”开头,因此我希望每个后续节都是“ B。”,“ C。”,依此类推。)

我想做的是使任何用户都能轻松地在我正在创建的此模板中添加信息列表,以防止篡改。这将简化此模板的过程,格式和表示,以防止组织中任何数量的不同用户输入几种不同形式的信息和格式样式。我希望任何用户都可以根据需要添加任意数量的节。

Sub Macro4()
'
' Macro4 Macro
'
Application.ActiveDocument.Unprotect "green"
'
With Listgalleries(wdNumbergallery).ListTemplates(1).ListLevels(1)
        .NumberFormat = "%1."
        .TrailingCharacter = wdTrailingTab
        .NumberStyle = wdListNumberStyleUppercaseLetter
        .NumberPosition = InchesToPoints(0.25)
        .Alignment = wdListLevelAlignLeft
        .TextPosition = InchesToPoints(0.5)
        .TabPosition = wdUndefined
        .ResetonHigher = 0
        .StartAt = 1
        With .Font
            .Bold = wdUndefined
            .Italic = wdUndefined
            .StrikeThrough = wdUndefined
            .Subscript = wdUndefined
            .Superscript = wdUndefined
            .Shadow = wdUndefined
            .Outline = wdUndefined
            .emboss = wdUndefined
            .Engrave = wdUndefined
            .AllCaps = wdUndefined
            .Hidden = wdUndefined
            .Underline = wdUndefined
            .Color = wdUndefined
            .Size = wdUndefined
            .Animation = wdUndefined
            .DoubleStrikeThrough = wdUndefined
            .Name = ""
        End With
        .LinkedStyle = ""
    End With
    Listgalleries(wdNumbergallery).ListTemplates(1).Name = ""
    Selection.Range.ListFormat.ApplyListTemplateWithLevel ListTemplate:= _
        Listgalleries(wdNumbergallery).ListTemplates(1),ContinuePrevIoUsList:= _
        False,ApplyTo:=wdListApplyToWholeList,DefaultListBehavior:= _
        wdWord10ListBehavior
    With Selection.ParagraphFormat
        .LeftIndent = InchesToPoints(0.75)
        .SpaceBeforeAuto = False
        .SpaceAfterauto = False
    End With
'
    Selection.Range.ContentControls.Add (wdContentControlRichText)
    Selection.TypeText Text:="The CONTRACTOR shall "
    With Selection.ParentContentControl
      .Color = wdColorRed
      .Title = "General"
      .DefaultTextStyle = "02_Body"
      .SetPlaceholderText,"The CONTRACTOR shall "
    End With
    Selection.Range.ContentControls.Add (wdContentControlRichText)
    With Selection.ParentContentControl
      .Color = wdColorRed
      .DefaultTextStyle = "02_Body"
      .SetPlaceholderText,"[Insert Details]"
    End With
'
Dim cc As Word.ContentControl
    Set cc = ActiveDocument.SelectContentControlsByTitle("General").Item(1)
    With cc
    .LockContents = True
    End With
'
Application.ActiveDocument.Protect wdAllowOnlyFormFields,Password:="green"

    
End Sub

解决方法

当您使用宏记录器时,Word将使用Selection对象。要将其转换为可应用于不同文档的通用宏,几乎总是想用Range对象代替Selection。有时需要进行认真的研究,但结果是更快,更可靠的宏。

我非常喜欢尽可能使用程序功能。维护和修订更加容易。在您的情况下,您可以创建分节符,后跟您喜欢的编号样式。然后选择分隔符和编号的标题,并将其另存为文档所基于的模板中的自动图文集(插入>快速部件>自动图文集>将选择保存到自动图文集)。 )。

然后,在代码中使用如下代码:

ActiveDocument.AttachedTemplate.AutoTextEntries("Section Break with Numbered Heading").Insert Where:=Selection.Range,RichText:=True

关于此代码的使用方式及其用途,您已经遗漏了很多信息。如您的要求添加“无数个部分”。 Word(和所有其他软件)不执行 infinite 。内存和存储空间总是有限的,因此也许您可以更严格地定义需求。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。