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

时间:2009-11-24 15:56:22

标签: vba ms-word

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

开始
  

快速棕色狐狸跳过 lazy 狗。

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

  

     

快速

     

棕色狐狸跳过了

     

懒惰

     

狗。

我曾希望在VBA中有一种内置的方法可以做到这一点(甚至还有使用这种设施的虚拟记忆),但我找不到任何东西。

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

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

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

1 个答案:

答案 0 :(得分:5)

在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等任何属性。