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

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");


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