如何在不改变列表初始标题编号的情况下将标题粘贴到列表中

时间:2019-09-25 03:28:11

标签: vba ms-word word-vba

在我的测试中,将不属于编号列表的标题的文本复制并粘贴到另一个具有编号列表的word文件中,导致单词自动将粘贴的标题集成为列表的新“元素”。这样,它会为每个标题创建附加的编号(除了以前可能具有的编号之外),并移动后续初始标题的编号。

复制的文本: To be Copied Text 粘贴前: Text before paste 粘贴后: After paste 有没有办法在保持此列表结构的同时不改变这些初始标题?

我确实想到了这种方法: ConvertNumbersToText

这将阻止word自动为该列表附近的所有内容编号。但是还有其他解决方案吗?我宁愿不使用它,因为我不知道如何重新启用“自动编号”。

[编辑1]: 另一个可行的解决方案是使用以下恢复类型进行粘贴和格式化: wdFormatOriginalFormatting

但是,只要我粘贴其中包含列表的标题,此修复程序都会失败。相反,在复制带有正文列表的标题时,正常粘贴(Selection.Paste)不会移动编号或为粘贴的列表创建任何新的编号。

1 个答案:

答案 0 :(得分:1)

据我所知,没有办法复制可以修改的样式。但是可以创建一种基于另一种样式的新样式,然后将新样式修改为稍有不同(即删除编号)。

以下代码段

  1. 声明并实例化两个Style对象:一个用于Heading 1样式,另一个用于新样式。
  2. 然后将新样式的BaseStyle属性设置为“标题1”样式,这意味着它将拾取所有基本样式的属性。
  3. 然后通过将其ListTemplate设置为Nothing,将其与编号断开链接

当我将其复制/粘贴到编号为标题1的文档中时,此文本未编号,但是看起来相同。也可以在TOC中进行拾取(如果这是所需的行为,也可以将TOC修改为 not 进行拾取)。

Sub CopyStyleAndUnlinkNumbering()
    Dim sH1 As Word.style
    Dim sH1Copy As Word.style

    Set sH1 = ActiveDocument.styles(WdBuiltinStyle.wdStyleHeading1)
    Set sH1Copy = ActiveDocument.styles.Add("Heading 1 Copy", Word.WdStyleType.wdStyleTypeParagraph)
    sH1Copy.BaseStyle = sH1
    sH1Copy.LinkToListTemplate ListTemplate:=Nothing
End Sub