如何在VBA中自动添加书签和超链接匹配文本

时间:2012-01-08 13:03:07

标签: vba word-vba

我正在尝试在VBA中为Word文档创建一个脚本,该文档将书签和超链接与字符串匹配,并将编号添加到文档中的某个位置。现在我有两组匹配的匹配文本,看起来像这样(有时还有数百个):

内容

'这里有一个名为“InpCon”的书签

  1. 4326:Info 1
  2. 32534:信息2
  3. 7980:Info 3
  4. '这里有一个名为“InpBod”的书签

    1. 4326:Info 1
    2. 32534:信息2
    3. 7980:Info 3
    4. 这就是我要做的事情:

      目录

      '这里有一个名为“InpCon”的书签

      1. 4326:信息1'超链接到书签名称:“Info1”
      2. 32534:信息2'超链接到书签名称:“Info2”
      3. 7980:信息3'超链接到书签名称:“Info3”
      4. '这里有一个名为“InpBod”的书签

        1. 4326:Info 1'书签名称:“Info1”
        2. 32534:Info 2'书签名称:“Info2”
        3. 7980:Info 3'书签名称:“Info3”
        4. 我正在尝试在我拥有的更大脚本的末尾实现这一点。较大的脚本将“InpBod”书签下的所有内容复制到“InpCon”书签中。我不知道在那里输入一个过程是否会更有效。

          基本上,我的VBA知识非常有限。我已经尝试过寻找完成这项任务的东西,但却找不到任何东西。我会粘贴我的代码,但它非常大并且独立于一个系统。如果我能完成它,这将减少我一周的工作时间。有人可以帮助我或指出我正确的方向吗?提前谢谢你。

1 个答案:

答案 0 :(得分:0)

不要“手动”生成“InpCon”。使用Word生成TOC。生成“InpBod”时,每次遇到想要链接的内容时,标记,然后以动态方式生成TOC。有两种可能的方法:

  1. 使用标题样式然后生成TOC。每当您偶然发现要标记的条目时,请将该段落标记为标题Selection.Range.Paragraphs.Style = ActiveDocument.Styles(wdStyleHeading1)。您可能想要更改默认标题样式。然后在开头插入TOC。
  2. 如果文档使用其他标题,请使用书签。每当您偶然发现要标记的条目时,请创建如下书签:ActiveDocument.Bookmarks.Add Range:=Selection.Range.Collapse wdCollapseEnd, Name:=**THEBOOKMARKNAME**。请注意,您必须删除空格以及书签名称的类型。然后使用activedocument.Bookmarks
  3. 迭代所有插入链接的Selection.InsertCrossReference ReferenceType:="Bookmark", ReferenceKind:= _ wdContentText, ReferenceItem:=ITEM, InsertAsHyperlink:=True, _ IncludePosition:=False, SeparateNumbers:=False, SeparatorString:=" "

    宏录制器将公开您需要执行此操作的所有对象。


    使用评论中的较新信息: Word的列表对象模型在这里得到了很好的说明:Looping a Word macro over many list paragraphs causes memory issuehttp://oreilly.com/catalog/writewordmacro/chapter/ch17.html,其中包含更多细节。这是适当的文档:http://msdn.microsoft.com/en-us/library/aa223019(v=office.11).aspx

    你应该遍历列表集合成员(对于我收集的内容,你应该只有一个列表,InpBod列表)。然后遍历该列表中的段落,选择每个段落:

    Dim para as Range
    For Each para In ActiveDocument.Lists(1).ListParagraphs
       para.Range.Select
    Next para