|
Как определить номер найденной строки в Word? | ☑ | ||
---|---|---|---|---|
0
KorolevP
31.07.12
✎
18:28
|
Добрый день!
Задача следующая: необходимо в определенном месте документа Word формировать таблицу. Пользователь выделяет это место определенным набором символов, допустим "ВывестиТаблицу". Делаю поиск с помощью: Замена = COMОбъект.Content.Find; Замена.Execute("ВывестиТаблицу"); Но не пойму как определить номер страницы :) Благодарю за помощь! |
|||
1
KorolevP
31.07.12
✎
18:33
|
Номер строки* конечно же :)
|
|||
2
izekia
31.07.12
✎
18:35
|
селекшн вроде будет
|
|||
3
France
31.07.12
✎
18:36
|
включить запись макроса и сделать поиск в ворде
|
|||
4
izekia
31.07.12
✎
18:38
|
(2)+ в смысле найденный фрагмент будет выделен
|
|||
5
KorolevP
31.07.12
✎
18:43
|
(4) не очень пойму где нужно селекшн поставить:)
вот код формирования документа: COMОбъект = ПолучитьCOMОбъект(ИмяОткрываемогоФайла); Замена = COMОбъект.Content.Find; Замена.Execute("**ВывестиТаблицу**"); Массив = Новый Массив(5);//сделаем таблицу из 5 строк + шапка Word = COMОбъект.Application; Док=Word.Documents(1); Док.Activate(); Word.Selection.MoveDown(,21); //21 строка - первая строка таблицы, должно быть передано в переменной Табл= Word.Selection.Range; Табл.InsertAfter("Сумма*Валюта*Назначение*Дата долга*Вид документа*Номер документа* *Дата оплаты"); Табл.InsertParagraphAfter(); Для й = 1 по Массив.Количество() Цикл Табл.InsertAfter("1"+"*"+"2"+"*"+"3"+"*"+"4"+"*"+"5"+ "*"+"6"+ "*"+"7"+ "*"+"8"); Табл.InsertParagraphAfter(); КонецЦикла; Табл.ConvertToTable("*"); COMОбъект.Tables(1).AutoFormat(1); |
|||
6
izekia
31.07.12
✎
18:50
|
а это у тебя не работает?
|
|||
7
KorolevP
31.07.12
✎
18:52
|
(6) ды работает как раз :) но Word.Selection.MoveDown(,21) привязывается к 21 строке, а я хочу, чтобы пользователь мог сам выбрать место (строку), где будет выводиться таблица.
вот никак не могу определить ее :)) |
|||
8
izekia
31.07.12
✎
18:58
|
Word.Selection.MoveDown(,21)
это вообще убери |
|||
9
KorolevP
31.07.12
✎
19:04
|
убрал :) тогда таблица выводится в самом начале документа)))
|
|||
10
izekia
31.07.12
✎
19:18
|
ага, в общем диапазон для которого делаешь поиск содержит найденную строку, вот это работает:
Док = ПолучитьCOMОбъект("c:\test.docx"); Док.Activate(); Табл = Док.Content; Табл.Find.Execute("**ВывестиТаблицу**"); Массив = Новый Массив(5);//сделаем таблицу из 5 строк + шапка //Табл= Док.Application.Selection.Range; Табл.InsertAfter("Сумма*Валюта*Назначение*Дата долга*Вид документа*Номер документа* *Дата оплаты"); Табл.InsertParagraphAfter(); Для й = 1 по Массив.Количество() Цикл Табл.InsertAfter("1"+"*"+"2"+"*"+"3"+"*"+"4"+"*"+"5"+ "*"+"6"+ "*"+"7"+ "*"+"8"); Табл.InsertParagraphAfter(); КонецЦикла; Табл.ConvertToTable("*"); Док.Tables(1).AutoFormat(1); Док.Application.Visible = True; |
|||
11
izekia
31.07.12
✎
19:18
|
правда не совсем так
|
|||
12
KorolevP
31.07.12
✎
19:21
|
Вот так
COMОбъект.BuiltInDocumentProperties(23) можно определить количество строк)) но мне бы текущую :) |
|||
13
izekia
31.07.12
✎
19:22
|
(!2) почитай (10)
|
|||
14
izekia
31.07.12
✎
19:26
|
вот это как надо работает, без лишнего кода:
Док = ПолучитьCOMОбъект("c:\test.docx"); Табл = Док.Content; Табл.Find.Execute("**ВывестиТаблицу**"); Массив = Новый Массив(5);//сделаем таблицу из 5 строк + шапка Табл.Text = ""; Табл.InsertAfter("Сумма*Валюта*Назначение*Дата долга*Вид документа*Номер документа* *Дата оплаты"); Табл.InsertParagraphAfter(); Для й = 1 по Массив.Количество() Цикл Табл.InsertAfter("1"+"*"+"2"+"*"+"3"+"*"+"4"+"*"+"5"+ "*"+"6"+ "*"+"7"+ "*"+"8"); Табл.InsertParagraphAfter(); КонецЦикла; Табл.ConvertToTable("*"); Док.Tables(1).AutoFormat(1); Док.Application.Visible = True; |
|||
15
KorolevP
31.07.12
✎
19:31
|
(13),(14) БЛАГОДАРЮ!! :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |