Word VBA:访问文档的“运行”

时间:2014-07-19 16:45:14

标签: vba ms-word word-vba

开放XML标准定义了“运行”,它基本上是构成段落的文本字符串(如果我理解正确的话)。我很好奇是否有人知道在“运行”级别而不是段落级别访问文档的方法。例如:

dim tRun as Run

for each tRun in Activedocument.Runs
    'Some code
next tRun

显然,上述方法无效。这可以通过VBA吗?

1 个答案:

答案 0 :(得分:0)

我从来没有听说过“跑步”。但是当你提到XML标准时,我认为通过运行你的意思是段落中所有“子项目”的摘要,例如可能有一个特殊的格式。澄清这个想法:

<p>And so quote the raven: <italic>Nevermore!</italic></p>

所以在这个例子中,“所以引用乌鸦:”和“永不停息!”将是两次运行。

但是,Word对象模型包含许多集合。 ActiveDocument.Paragraphs只是一个。还有:

  • ActiveDocument.Characters
  • ActiveDocument.Words
  • ActiveDocument.Sentences
  • ActiveDocument.Fields

等。通过此集合,您可以选择任何较小的文本片段。但是要解决这些问题,你不必经历一个段落。

所有这些较小的文本片段都有一个共同点是Range属性。您可以检查任何一件作品的范围,它会有StartEnd个数字。这些是非模糊的文档中可以直接计算的字符数。此外,Range具有Font属性。在此Font属性中,存储的所有信息都适合“run”的初始定义。

获取文本片段的另一种更加动态的方法是使用ActiveDocuments.Range(start, end)。通过这个,你将获得一个Range对象,它再次包含上面提到的所有集合:字符,单词,段落,句子等。范围的集合仅包含实际位于范围内的项目,与文件的集合。

总结一下:在word文档中,你没有运行,但你有几个复杂的集合。集合通过非模糊的开始和结束范围编号连接。所以你可以从段落中找到它的词或从句子到拥抱段等。

为了进一步理解,您可能希望阅读MSDN上的Word对象模型,或者只是在监视窗口的VBA编辑器中检查Word文档中的模型。