假设我有一个 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/