我正在尝试在VBA中为Word文档创建一个脚本,该文档将书签和超链接与字符串匹配,并将编号添加到文档中的某个位置。现在我有两组匹配的匹配文本,看起来像这样(有时还有数百个):
内容
'这里有一个名为“InpCon”的书签
体
'这里有一个名为“InpBod”的书签
这就是我要做的事情:
目录
'这里有一个名为“InpCon”的书签
体
'这里有一个名为“InpBod”的书签
我正在尝试在我拥有的更大脚本的末尾实现这一点。较大的脚本将“InpBod”书签下的所有内容复制到“InpCon”书签中。我不知道在那里输入一个过程是否会更有效。
基本上,我的VBA知识非常有限。我已经尝试过寻找完成这项任务的东西,但却找不到任何东西。我会粘贴我的代码,但它非常大并且独立于一个系统。如果我能完成它,这将减少我一周的工作时间。有人可以帮助我或指出我正确的方向吗?提前谢谢你。
答案 0 :(得分:0)
不要“手动”生成“InpCon”。使用Word生成TOC。生成“InpBod”时,每次遇到想要链接的内容时,标记,然后以动态方式生成TOC。有两种可能的方法:
Selection.Range.Paragraphs.Style = ActiveDocument.Styles(wdStyleHeading1)
。您可能想要更改默认标题样式。然后在开头插入TOC。ActiveDocument.Bookmarks.Add Range:=Selection.Range.Collapse wdCollapseEnd, Name:=**THEBOOKMARKNAME**
。请注意,您必须删除空格以及书签名称的类型。然后使用activedocument.Bookmarks
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 issue和http://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