vba - MS Word VBA - 确定 "style run"的范围?

标签 vba ms-word

假设我有一个 Range Word VBA 中的引用,我想将其分解为格式(字体、颜色等)相同的较小范围。例如,如果我开始:

The quick brown fox jumped over the lazy dog.


...然后我想取回 5 个范围,如下所示:

The

quick

brown fox jumped over the

lazy

dog.


我曾希望在 VBA 中有一种内置的方法来做到这一点(甚至有使用这种工具的幻觉),但我找不到任何东西。
我可以在代码中做我需要做的事情,但 native 工作的东西会快得多(快得多)。
[在代码中,我会使用以下事实 - 例如 - oRange.Font.Bold如果范围包含粗体和非粗体的混合,将返回“未定义”,因此我可以反复使用它来发现统一范围的范围。但我很确定 Word 会在幕后做这件事,所以如果有人能帮我打开那个引擎盖,我会很感激。]
编辑 :删除了 StackOverflow HTML 渲染器不喜欢的更复杂的示例。

最佳答案

不能在 VBA 中真正做到这一点,因为 OM 不支持运行(但是 OOXML 支持)。您可能做的最好的事情是获取 wdCharacterFormatting 的 wdUnits 并创建一个循环来创建范围,提取它们的属性,然后销毁它们直到循环完成。您可能会从以下内容开始:

Dim sel As Selection
Set sel = ActiveWindow.Selection
Dim selRange As Range
Set selRange = selRange.Next(wdCharacterFormatting)

获取下一组格式的开始和结束,如 selRange.Start/selRange.End,以及任何属性,如 selRange.Font.Name/selRange.Bold。

关于vba - MS Word VBA - 确定 "style run"的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1790988/

相关文章:

VBA 返回不同工作簿中范围值的总和

javascript - 分区 :hover works oddly in IE-8

vba - 如何在 VBA (Excel) 中获取以毫秒为单位的 DateDiff-Value?

vba - 如何迭代多个 Word 实例(使用 AccessibleObjectFromWindow)

vba - 在word中分配奇数页码

vba - MS Access VBA 循环遍历列表

vba - 如何在没有任何数据行的情况下读取 Excel 表/ListObject 中的计算列的公式

python - 如何以编程方式将注释插入 Microsoft Word 文档?

delphi - 如何通过 OleAutomation 删除或更改附加模板

c# - 识别对互操作库(Doument.Paragraphs 等)中对象的唯一引用