Имя: Пароль:
1C
 
Как заполнить колонтитул в документе Word из 1С?
0 Arhitektor
 
18.02.04
13:57
Как заполнить колонтитул в документе Word из 1С?
1 Arhitektor
 
18.02.04
14:06
Работаю следующим образом:

Перем Путь;

//создаем ссылку на объект Word и делаем его невидимым
Word = СоздатьОбъект("Word.Application");
Word.Visible = 0;
                                                   
//связываем ссылку с конкретным файлом
Если СокрЛП(ВидДоговора) = "Основной договор" Тогда
Путь = КаталогИБ()+"ExtForms\Шаблоны\Договор.doc";
ИначеЕсли СокрЛП(ВидДоговора) = "ТО" Тогда            
Путь = КаталогИБ()+"ExtForms\Шаблоны\ДоговорТО.doc";
ИначеЕсли СокрЛП(ВидДоговора) = "ПО" Тогда              
Путь = КаталогИБ()+"ExtForms\Шаблоны\ДоговорПО.doc";
КонецЕсли;
   
Word.Documents.Open(Путь,,-1);
   
//Создаем объект Fnd типа Find для поиска в документе
Fnd = Word.ActiveDocument.Range().Find;
Fnd.ClearFormatting();                              
Fnd.Forward = -1;
   
//заполняем колонтитул
Fnd.Execute("<Фирма_Кр>",,,,,,,,,СокрЛПФирма.ЮрЛицо.Наименование), 2); //не работает
   
//заполняем шапку документа
Fnd.Execute("<НомерДок>",,,,,,,,,НомерДок, 2);
Fnd.Execute("<ДатаДок>",,,,,,,,,НРЕГ(Формат(ДатаДок,"Д (0)ДДММММГГГГ")), 2);
Fnd.Execute("<Место>",,,,,,,,,Место, 2);
Fnd.Execute("<Фирма>",,,,,,,,,СокрЛП(Фирма.ЮрЛицо.ПолнНаименование), 2);
   
//выводим документ для просмотра и активизируем его
Word.Visible = 1;
Word.Activate();

Но как заполнить колонтитул?
2 shura
 
18.02.04
14:12
Вручную поиск и замена в колонтитуле работает. Смотри на Fnd.Execute может после какой запятой надо указать область поиска?
3 romix
 
18.02.04
14:17
В учебниках по VBA рекомендуют новичкам юзать макрорекордер (Макросы - Записать). Word (Excel) генерит макрос, повторяющий действия пользователя, например, редактирование колонтитула.
4 Arhitektor
 
18.02.04
14:38
F1 F1 F1 F1 F1 F1 F1 F1 F1.......
5 Шершень
 
18.02.04
14:41
Можно так:
Word.ActiveDocument.Sections(1).Headers(1).Range.Text = "Мой любимый документ";
6 Arhitektor
 
18.02.04
14:42
А если там надо что-то поменять как в тексте?
7 Arhitektor
 
18.02.04
14:50
Тогда поступаем так:
FndCol = Word.ActiveDocument.Sections(1).Headers(1).Range().Find;
FndCol.Execute("<Что_меняем>",,,,,,,,,"На_что_меняем", 2);

Спасибо, Шершень
в (1) тоже твой текст...
8 Шершень
 
18.02.04
15:16
(7) ЗдОрово!
Кста, более правильно делать так:

FndCol.Execute("<Что_меняем>",,,,,,-1,,,"На_что_меняем", 2);

а строчку

Fnd.Forward = -1;

писать не надо. Параметры метода перебивают то, что установлено через свойства объекта. 7-й параметр - направление поиска, вперед.
9 Arhitektor
 
19.02.04
06:30
Спасибо, Шершень!

Поменял, вроде как даже немного быстрее работает.

А вот так можно сохранить документ:
Word.ActiveDocument.SaveAs("e:\hello.doc");
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.