Word VBA:查找、复制文档正文中的关键短语,并将其粘贴到页面顶部的书签位置



我需要找到一个解决方案来创建一个"报告摘要";子,它在word文档中找到各种结果数据的顶行,并将它们插入到页面顶部的书签位置下

每个结果都作为一个公共值,可以找到,扩展到选择整行,然后复制。我正在努力的一点是让sub找到所有符合条件的短语,并将它们粘贴到页面顶部的书签位置。我可以让sub复制短语的第一个实例,但不能复制所有实例。就上下文而言,我使用的关键短语是":"因为所有结果都包含该值。我尝试的另一种方法导致子创建了一个无休止的循环,粘贴短语的第一个实例,直到Word崩溃。我想我需要写一个脚本,找到短语,然后,一旦复制和粘贴,转到下一个实例,并最终在子到达文档末尾时结束它。以下是我目前的立场:

Sub Report_SummaryTest()
If Selection.StoryType <> wdMainTextStory Then
With ActiveDocument.ActiveWindow.View
.Type = wdPrintView
.SeekView = wdSeekMainDocument
End With
End If
Selection.HomeKey Unit:=wdStory
With Selection.Find
.Text = " : "
.Format = False
.Forward = True
.MatchWildcards = False
.Wrap = wdFindStop
While .Execute
Selection.Expand Unit:=wdLine
Selection.Copy ' Unit:=wdLine
Selection.GoTo What:=wdGoToBookmark, Name:="RepSummary"
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.Paste
Wend
End With
End Sub

结果数据(每个报告最多7或8个)如下所示:

测试结果一:阳性

指南:

结果一的指导原则。结果一的指导方针。结果一的指导方针。结果一的指导方针。结果一的指导方针。结果一的指导方针。结果一的指导方针。结果一的指导方针。结果一的指导方针。结果一的指导方针。结果一的指导方针。结果一的指导方针。结果一的指导方针

理想情况下,我想要";"报告摘要";看起来像这样:

摘要

测试结果一:阳性

测试结果二:阳性

测试结果三:阴性

如有任何建议,不胜感激。

您可以简单地使用Word目录

我不知道你为什么要重新发明轮子。您可以在特定样式中拥有所需内容,也可以使用TC字段。Word中的目录是一个TOC字段。您不需要页码,可以自定义页码。这是此字段上的Microsoft页面。

语法

当您查看文档中的TOC字段时,语法如下这个:

{TOC〔交换机〕}

确定目录中包含哪些内容的交换机

\o"Levels">

根据使用以下样式格式化的段落构建目录包括大纲级别(最常见的是标题样式)。例如{TOC;1-3〃}仅列出使用以下样式格式化的段落包括大纲级别1到3。如果没有大纲级别的范围指定时,将列出文档中使用的所有大纲级别。随函附上引号中的范围数字。

\t";样式,级别,样式,级别">

根据使用其他样式格式化的段落构建目录而不是内置样式。例如{TOC\t〃章节标题,1,牧师,2〃}根据格式化的段落构建目录具有样式";章节标题";以及";牧师"后面的数字每个样式名称指示目录条目级别对应于该样式。

您可以同时使用\o开关和\t开关来构建内置样式和自定义样式中的内容。

\u

根据格式包含以下内容的段落构建目录在段落设置中直接应用的大纲级别。

\c";SEQIdentifier">

列出按编号的图形、表格、图表或其他项目SEQ(序列)字段。Word使用SEQ字段对标题项进行编号使用Caption命令(References>Insert Caption)。SEQIdentifier,与标题标签相对应的标识符必须与中的标识符匹配SEQ字段。例如,{TOC\c"tables"}列出所有编号表。

\a标识符

列出使用"标题"命令加标题的项目(参考资料>插入Caption),但省略了标题标签和数字。标识符对应于标题标签。例如,尽管第12页是";图8:Mercury";,字段{TOC\a figures}显示条目为";水星12〃;。

使用\c开关构建一个带有标签和数字。

\f入口标识符

从TC字段构建一个表。如果指定了EntryIdentifier,则表仅由具有相同标识符的TC字段构建(通常一封信)。例如,{TOC\f t}从TC字段,例如{TC"条目文本"\ft}。

\l水平

从TC字段构建一个目录,这些字段将条目分配给一个指定级别的。例如,{TOC\l 1-4}构建了一个将条目分配给级别1-4的TC字段中的内容。TC字段将条目分配给较低级别的条目被跳过。

\BookmarkName

仅从文档中由指定的书签。

格式化页码的开关

\s标识符

在页码之前包括一个数字,例如章节号。这个章节或其他项目必须使用SEQ字段进行编号。标识符必须与SEQ字段中的标识符匹配。例如,如果插入{SEQ章节}在每个章节标题之前,{TOC\o"1-3"的章节}将页码显示为2-14;2〃;是章节编号。

\d";分离器";

与\ s开关一起使用时,指定分隔序列号和页码。将字符封装在引号。如果未指定\d开关,Word将使用连字符(-)。在由{TOC\o〃1-3〃的章节\d〃:〃生成的目录中;},冒号(:)分隔章节号和页码--例如;2:14;

\p";分离器">

指定分隔条目及其页码的字符。例如,字段{TOC\p"--"},带有一个短划线,显示结果如";选择文本-53;默认为带引线的选项卡点。只允许使用一个字符;必须附在报价单中标记。

\n级别

从目录中省略页码。页码为从所有级别中省略,除非指定了入口级别的范围。例如,{TOC\n3-4}省略了级别3和4的页码。删除此开关以包括页码。

这里还有更多未引用的内容。

有关更多信息,请参阅Word MVP Suzanne Barnhill的TOC技巧和提示。

最新更新