MS Word VBA - Определяет степень “выполненного стиля”?

Предположим, что у меня есть a Range ссылка в Word VBA, и я хочу разломать это на меньшие диапазоны, где форматирование (шрифт, цвет, и т.д.) идентично. Например, если я запускаю с:

Быстрая коричневая лиса перепрыгнула через лентяя.

... затем я хотел бы возвратить 5 диапазонов, следующим образом:

быстрый

обжарьте лису, через которую перепрыгивают

ленивый

собака.

Я надеялся, что был встроенный способ сделать это в VBA (и даже иметь фантомную память использования такого средства), но я ничего не могу найти.

Я мог сделать то, что я должен сделать в коде, но что-то, что работает исходно, было бы намного (намного) более быстрым.

[В коде я использовал бы факт это - например - oRange.Font.Bold возвратится "неопределенный", если диапазон будет содержать соединение полужирного цвета и не полужирный, и таким образом, я мог использовать это неоднократно для обнаружения степени универсальных диапазонов. Но я вполне уверен, что Word будет делать это под капотом, поэтому если бы кто-то может вытолкать тот капот для меня, я был бы благодарен.]

Править: удаленный более сложный пример, который не любил рендерер StackOverflow HTML.

5
задан Gary McGill 24 November 2009 в 16:31
поделиться

1 ответ

На самом деле это невозможно сделать в VBA, поскольку OM не поддерживает запуски (однако OOXML поддерживает). Лучшее, что вы могли бы сделать, это получить wdUnits из wdCharacterFormatting и создать цикл для создания диапазонов, извлечения их свойств и последующего уничтожения их до завершения цикла. Вы, вероятно, начнете с чего-то вроде:

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.

5
ответ дан 14 December 2019 в 19:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: