[ID CC-CC2021] Почему получается массив, а не строка? (VBA)

hulk1776

Топикстартер
15 лет на форуме
Сообщения
735
Реакции
21
Текст на VBA, но можно подсказать и на Java
Задача: найденный фрагмент текста переместить в др. фрейм.
После выполненного поиска измеряю индексы букв, которые ограничат искомую часть текста. И задаю этот диапазон:
Set mText = mStory1.Characters.ItemByRange(mIndex1, mIndex2)
Получается массив из символов (а не текстовая переменная). Которую нельзя никуда move.
Если так:
Set mText = mStory1.Characters.ItemByRange(mIndex1, mIndex2).Contents
то пишет, что Object doesnt support...
Как же вытащить текст из Story по индексам символов?
 

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 216
Есть в этом богомерзком VBA вот такая конструкция?
Set mText = mStory1.Characters.ItemByRange(mIndex1, mIndex2)getElements()(0).Contents
Или просто
Set mText = mStory1.Characters.ItemByRange(mIndex1, mIndex2)(0).Contents
Ибо в нормальном состоянии itemByRange выдает интересную коллекцию объектов, которую (в нормальном же состоянии) можно частично обработать, как один объект.
 
  • Спасибо
Реакции: hulk1776

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Есть в этом богомерзком VBA вот такая конструкция?
Set mText = mStory1.Characters.ItemByRange(mIndex1, mIndex2)getElements()(0).Contents
Или просто
Set mText = mStory1.Characters.ItemByRange(mIndex1, mIndex2)(0).Contents
Ибо в нормальном состоянии itemByRange выдает интересную коллекцию объектов, которую (в нормальном же состоянии) можно частично обработать, как один объект.
В VB массивы обычно с 1 начинаются.
Но вообще надо разбираться почему Contents нот саппорт
Если это Contents конечно
Разбить выражение на части и посмотреть какой именно обьект не поддерживается.
Но правильное решение - действительно забыть б-гомерзкий VBS как страшный сон и делать на жабоскрипте
 

hulk1776

Топикстартер
15 лет на форуме
Сообщения
735
Реакции
21
"на жабоскрипте" не удобно, так как исходник приходит в Ворде. Оттуда вся каша (автоверстка) и запускается. Проверю getelements().
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Не совсем понял - так это что - вордовский VBA?
 

hulk1776

Топикстартер
15 лет на форуме
Сообщения
735
Реакции
21
Есть в этом богомерзком VBA вот такая конструкция?
Set mText = mStory1.Characters.ItemByRange(mIndex1, mIndex2)getElements()(0).Contents
Или просто
Set mText = mStory1.Characters.ItemByRange(mIndex1, mIndex2)(0).Contents
Ибо в нормальном состоянии itemByRange выдает интересную коллекцию объектов, которую (в нормальном же состоянии) можно частично обработать, как один объект.
C Contents - not support.
Без Contents собирает коллекцию (см. картинку) (команду getelements не знает).
На проверить через java этот эпизод и потом мб проще вызывать из VBA.
Но вся проблема возникла из-за того, что ГРЕП-поиск ("\(Endnotes\)(\r|\n|.)+") иногда не срабатывает до конца статьи (см. нижний скрин). Поэтому стал искать обходные пути получения текста "от найденного и до конца".

1646986659105.png


результат ручного запуска ГРЕПа (выделение происходит не до конца статьи, как должно бы быть)
1646986988004.png
 

hulk1776

Топикстартер
15 лет на форуме
Сообщения
735
Реакции
21
(прошу прощения, что отвечаю не сразу, - загнали с работой (((
На нижней картинке (моей)) просто показано, что после запуска греп-поиска ("отсюда и до конца") выделяется текст НЕ до конца материала, а не понятно до чего (с экрана никаких служебных/тайных символов там не обнаружено). Таким образом непонятна "мотивировка" грепа периодически отклоняться от задания.