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

  • Автор темы Автор темы hulk1776
  • Дата начала Дата начала

hulk1776

Топикстартер
15 лет на форуме
Сообщения
738
Реакции
21
Текст на VBA, но можно подсказать и на Java
Задача: найденный фрагмент текста переместить в др. фрейм.
После выполненного поиска измеряю индексы букв, которые ограничат искомую часть текста. И задаю этот диапазон:
Set mText = mStory1.Characters.ItemByRange(mIndex1, mIndex2)
Получается массив из символов (а не текстовая переменная). Которую нельзя никуда move.
Если так:
Set mText = mStory1.Characters.ItemByRange(mIndex1, mIndex2).Contents
то пишет, что Object doesnt support...
Как же вытащить текст из Story по индексам символов?
 
Есть в этом богомерзком VBA вот такая конструкция?
Set mText = mStory1.Characters.ItemByRange(mIndex1, mIndex2)getElements()(0).Contents
Или просто
Set mText = mStory1.Characters.ItemByRange(mIndex1, mIndex2)(0).Contents
Ибо в нормальном состоянии itemByRange выдает интересную коллекцию объектов, которую (в нормальном же состоянии) можно частично обработать, как один объект.
 
  • Спасибо
Реакции: hulk1776
Есть в этом богомерзком 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 как страшный сон и делать на жабоскрипте
 
"на жабоскрипте" не удобно, так как исходник приходит в Ворде. Оттуда вся каша (автоверстка) и запускается. Проверю getelements().
 
Не совсем понял - так это что - вордовский VBA?
 
Есть в этом богомерзком 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
 
(прошу прощения, что отвечаю не сразу, - загнали с работой (((
На нижней картинке (моей)) просто показано, что после запуска греп-поиска ("отсюда и до конца") выделяется текст НЕ до конца материала, а не понятно до чего (с экрана никаких служебных/тайных символов там не обнаружено). Таким образом непонятна "мотивировка" грепа периодически отклоняться от задания.