Вход | Регистрация

1С:Предприятие ::

Метки: 

Как заполнить колонтитул в документе Word из 1С?

Я
   Arhitektor
 
18.02.04 - 13:57
Как заполнить колонтитул в документе Word из 1С?
 
  Рекламное место пустует
   Arhitektor
 
1 - 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();

Но как заполнить колонтитул?
   shura
 
2 - 18.02.04 - 14:12
Вручную поиск и замена в колонтитуле работает. Смотри на Fnd.Execute может после какой запятой надо указать область поиска?
   romix
 
3 - 18.02.04 - 14:17
В учебниках по VBA рекомендуют новичкам юзать макрорекордер (Макросы - Записать). Word (Excel) генерит макрос, повторяющий действия пользователя, например, редактирование колонтитула.
   Arhitektor
 
4 - 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 = "Мой любимый документ";
   Arhitektor
 
6 - 18.02.04 - 14:42
А если там надо что-то поменять как в тексте?
   Arhitektor
 
7 - 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-й параметр - направление поиска, вперед.
   Arhitektor
 
9 - 19.02.04 - 06:30
Спасибо, Шершень!

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

А вот так можно сохранить документ:
Word.ActiveDocument.SaveAs("e:\hello.doc");


Список тем форума
Рекламное место пустует  
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует