开放XML标准定义了“运行”,它基本上是构成段落的文本字符串(如果我理解正确的话)。我很好奇是否有人知道在“运行”级别而不是段落级别访问文档的方法。例如:
dim tRun as Run
for each tRun in Activedocument.Runs
'Some code
next tRun
显然,上述方法无效。这可以通过VBA吗?
答案 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
属性。您可以检查任何一件作品的范围,它会有Start
和End
个数字。这些是非模糊的文档中可以直接计算的字符数。此外,Range
具有Font
属性。在此Font
属性中,存储的所有信息都适合“run”的初始定义。
获取文本片段的另一种更加动态的方法是使用ActiveDocuments.Range(start, end)
。通过这个,你将获得一个Range
对象,它再次包含上面提到的所有集合:字符,单词,段落,句子等。范围的集合仅包含实际位于范围内的项目,与文件的集合。
总结一下:在word文档中,你没有运行,但你有几个复杂的集合。集合通过非模糊的开始和结束范围编号连接。所以你可以从段落中找到它的词或从句子到拥抱段等。
为了进一步理解,您可能希望阅读MSDN上的Word对象模型,或者只是在监视窗口的VBA编辑器中检查Word文档中的模型。