gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 19:23:33 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com