Заполнеие шаблона через COM. Замена %дескрипторов% в таблице.
Возник вопрос по генерации отчета в MS Word.
Описание стенда и задачи:
Есть шаблон, который лежит в известной директори.
Через СOM подключаем Word (2003) и создаем страницу по шаблону.
В шаблоне есть набор дескрипторов вида %descriptor%.
Используя:
Call wordDoc.Content.Find.Execute ( "%descriptor%", True, False, False, False, False, True,, False, "TEST" )
меняем все дискрипторы в шаблоне на те значения, что мне нужны.
И вроде счастье близко, но есть проблема с дескрипторами, которые находятся в таблице следующего вида:
-----------------------------------
%descr1% | %descr2% | %descr3%|
-----------------------------------
Естественно, в таблицу будет записана не одна строчка значений, а матрица.
При этом, необходимо, чтобы заказчик мог в шаблоне вытащить дескриптор из таблицы и поставить его в любое место страницы.
Как думал решить:
Найти в шаблоне дескриптор и выяснить, в таблице ли он.
Если да, то добавить строку таблицы, переместить дескриптор на строчку вниз, а в освободившуюся ячейку запихать значение.
Если нет, то просто заменить на строку данных из матрицы, перечислив значения через запятую :)
Чего сделал:
Dim range As Variant
Set range = ActiveDocument.Content
range.Find.Execute "%DESC%", True
range.Select
Находит и выделяет. Но тут и возникает трабл - не знаю, каким образом определить, в таблице находиться объект range, или вне ее. Думал, поможет свойства Parent, но оно честно вернуло мне объект Document в обоих случаях. Проверял
MsgBox TypeName( range.Parent )
Если кто знает, как это реализовать, просьба поделится ценным опытом.
Если есть уверенность, что это нереализуемо, также сообщите - чтобы я мог своему начальству это объяснить :)
С уважением, Rombs
[QUOTE=MSDN]
Range.TopLevelTables Property
Returns a Tables collection that represents the tables at the outermost nesting level in the current range.
[/QUOTE]
range.Tables.Count :)
Расскажи чего получилось
Получилось, что возвращает :) так что оба варианта работают