ОБСУЖДЕНИЕ

Чтение данных из таблицы в ричтекст-поле

10 ответов 6,2 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
вот фрагмент кода
Код:
	Set body = doc.GetFirstItem("SwitchByDepRT")
Set rtnav = body.CreateNavigator
Set rtrange = body.CreateRange

...

Call rtnav.FindFirstElement( RTELEM_TYPE_TABLE )
Call rtnav.FindFirstElement( RTELEM_TYPE_TABLECELL )

While rtnav.FindNextElement( RTELEM_TYPE_TABLECELL)

Call rtrange.SetBegin(rtnav)
tmp = rtrange.TextRun

Wend
на проверке вхождения в цикл возникает ошибка Position is no valid
Подскажите.. что не так?
 
а ты результат FindFirstElement используй, а не слепо вызываешь FindNextElement
похоже, что не найден первый элемент...

Код:
if rtnav.FindFirstElement( RTELEM_TYPE_TABLECELL ) then
...
While rtnav.FindNextElement( RTELEM_TYPE_TABLECELL)
...

аа... прошу прощения, может быть, что цикл прошел несколько итераций и ошибка возникает когда уже все ячейки пройдены...
не пользовал эти методы, может проще всего поставить просто обработчик этой ошибки и пропускать ее...
on error XXX resume next
 
Так ты не ставь обработчик ошибок. Он здесь не нужен.
Наверное у тебя Call rtnav.FindFirstElement( RTELEM_TYPE_TABLECELL ) вернуло false. Где в этом случае находится указатель не понятно, поэтому на rtnav.FindNextElement( RTELEM_TYPE_TABLECELL) появляется ошибка.
В принципе можно сразу искать ячейку. Т.е. Call rtnav.FindFirstElement( RTELEM_TYPE_TABLE ) можно выкинуть.
 
прошу прощения.... но похоже вопрос снимается...
Похоже что с таблицей в тестовом документе что-то было... что именно не знаю.... взял новый документ - вроде бы все нормально
 
ты от ответа-то не уходи :))
код должен уметь обрабатывать такие ситуации, поэтому лучше разрулить до...
 

Статистика тем

Создано
NickProstoNick,
Последний ответ от
Akupaka,
Ответы
10
Просмотры
6 153