MS Word VBA - 确定"风格运行"的程度?

Gar*_*ill 5 vba ms-word

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

快速的棕色狐狸跳过了懒惰的狗.

...然后我想回到5个范围,如下:

棕色的狐狸跳过了

狗.

我曾希望有一种内置的方法可以在VBA中执行此操作(甚至可以使用这样的工具进行虚拟记忆),但我找不到任何东西.

我可以在代码中做我需要做的事情,但是本地工作的东西会更快(更多).

[在代码中,我会使用这样的事实 - 例如 - oRange.Font.Bold如果范围包含粗体和非粗体的混合,将返回"undefined",因此我可以重复使用它来发现均匀范围的范围.但是我很确定Word会在幕后做这件事,所以如果有人可以为我吹嘘,我会很感激.]

编辑:删除了StackOverflow HTML渲染器不喜欢的更复杂的示例.

Tod*_*ain 5

在VBA中无法真正做到这一点,因为OM不支持运行(但OOXML却支持).您可能做的最好的事情是获取wdCharacterFormatting的wdUnits并创建一个循环来创建范围,提取它们的属性然后销毁它们直到循环结束.你可能会开始这样的事情:

Dim sel As Selection
Set sel = ActiveWindow.Selection
Dim selRange As Range
Set selRange = selRange.Next(wdCharacterFormatting)
Run Code Online (Sandbox Code Playgroud)

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