|
Замена текста в Word AD
| ☑ |
0
Альбатрос
03.10.13
✎
10:57
|
Договор = ПолучитьМакет("Макет"); // получим макет-ActiveDocument
MSWord = Договор.Получить();
Для каждого Строчка из ПриемНаРаботу.РаботникиОрганизации цикл
Попытка
Doc = MSWord.Application.Documents(1);
Doc.Activate();
Replace = Doc.Content.Find;
FindText = "{НомерДоговора}"; Replace.Execute(FindText,Ложь,Истина,Ложь,,,Истина,,Ложь,ОбщегоНазначенияЗК.ПолучитьНомерНаПечать(ПриемНаРаботу));
Если у меня в документе много шаблонов вида "{НомерДоговора}", то как задать цикл, чтоб они все заменились, а не только первый?
|
|
1
Альбатрос
03.10.13
✎
11:14
|
неужели нет метода? придется копировать блок с заменой текста столько раз, сколько текст встречается в макете :( Неоптимальненько как-то...
|
|
2
BuHu
03.10.13
✎
11:19
|
(1) открой ворд , включи запись макроса , выполни ту операцию ,которую хочешь выполнить программно , руками . останови запись макроса , посмотри код . мне иногда помогало.
|
|
3
Мыш
03.10.13
✎
11:21
|
Find.Execute Method
Parameters
Replace
Specifies how many replacements are to be made: one, all, or none. Can be any WdReplace constant.
|
|
4
Мыш
03.10.13
✎
11:22
|
Подробнее в синтакс [зачеркнуто], MSDN-помощнике
|
|
5
Chikko
03.10.13
✎
11:25
|
В бсп для ворда вроде есть процедуры. УправлениеПечатьюMSWordКлиент
|
|
6
BuHu
03.10.13
✎
11:26
|
как то надо сказать ворду - WdReplaceAll
|
|
7
Альбатрос
03.10.13
✎
11:33
|
(3) (4) (6) Спасибо, щас опробую
|
|
8
Альбатрос
03.10.13
✎
11:38
|
Блин, а как передать WDReplaceAll? Просто текстом не получается...
|
|
9
Альбатрос
03.10.13
✎
11:42
|
все, понял, вот так:
wdReplace = 2;
Replace.Execute(ИскомыйТекст,Ложь,Истина,Ложь,,,Истина,,Ложь,ТекстЗамены,wdReplace);
|
|
10
Альбатрос
03.10.13
✎
11:43
|
Еще раз спасибо!
|
|
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший