EXCEL-создать Word-ий файл по заданному шаблону

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
anval
Сообщения: 98
Зарегистрирован: 09 ноя 2004, 10:06

24 апр 2009, 14:50

Имеется WORD-ий шаблон некоторого документа. Нужно в макросе EXCEL создать WORD-ий документ на основе этого шаблона. Как это сделать?
Аватара пользователя
Aent
Сообщения: 1108
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

24 апр 2009, 15:50

Вариант с поздним связыванием

Код: Выделить всё

Dim WordObj as Object
Dim WordDoc as Object
On Error Resume Next
Set WordObj = GetObject(, "Word.Application")
if Err.Number <> 0 then
    'Нет экземпляра  Word.Application, создадим его
    Err.Clear
    Set WordObj = CreateObject("Word.Application")
end if 
Set WordDoc = WordObj.Documents.Add(ThisWorkbook.Path + "\Patter.dot".dot", False)
if Err.Number <> 0 then
    'Ошибка при создании документа. Возможно неверно имя шаблона или путь к нему 
end if
'В данный момент документ скрыт. Осуществляем если нужно подстановку
'Используйте для этого Закладки или Поля
On error goto 0
.......
WordObj.Visible = True ' Показываем Word
Set WordDoc = Nothing
Андрей Энтелис,
aentelis.livejournal.com
anval
Сообщения: 98
Зарегистрирован: 09 ноя 2004, 10:06

27 апр 2009, 14:21

Aent,
большое спасибо, все получилось. Только непонятно, почему антивирус Касперского реагирует проактивной защитой на команду
"Set WordObj = GetObject(, "Word.Application")"
("Проактивная защита: Тревога
Внимание!
Потенциально опасное ПО(модификация):
...
Действие
Обнаружена опасная макрокоманда. Рекомендуется завершить работу скрипта, содержащую данную компнду. Подробно..."

а команду
"Set WordObj = CreateObject("Word.Application")"
свободно пропускает.
Аватара пользователя
Aent
Сообщения: 1108
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

27 апр 2009, 14:56

Anval, по тому что в КAV страдает некоторой параноей.
Он считает что оператор GetObject больше свойственен коду макровирусов.
(Cовершенно кстати напрасно)
Добавьте вашу книгу или папку с ней в исключения
Настройка->Параметры->Исключения->Доверенная зона
Андрей Энтелис,
aentelis.livejournal.com
anval
Сообщения: 98
Зарегистрирован: 09 ноя 2004, 10:06

28 апр 2009, 14:31

Aent, спасибо, все получилось
anval
Сообщения: 98
Зарегистрирован: 09 ноя 2004, 10:06

05 май 2009, 08:50

Еще вопрос в продолжение темы.
Схема работы макроса такая: работаем с EXCEL-евской книгой, активным является окно, в котором представлена эта книга, в какой-то момент вызывается макрос, который загружает WORD-ий шаблон (о нем вопрос был выше). Шаблон загружается, но окно, в котором расположился WORD (выбран режим "WordObj.Visible = True") -старое, если WORD уже был загружен, или вновь образованное, находится где-то на заднем плане. Как переместить это окно на передний план? Спасибо.
Аватара пользователя
Aent
Сообщения: 1108
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

05 май 2009, 10:07

Надо воспользоваться методом Activate для Word

Код: Выделить всё

....
WordObj.Activate
....
Андрей Энтелис,
aentelis.livejournal.com
anval
Сообщения: 98
Зарегистрирован: 09 ноя 2004, 10:06

06 май 2009, 09:45

Aent, спасибо, все отлично.
GeorgeSoca
Сообщения: 0
Зарегистрирован: 12 окт 2015, 04:09
Откуда: Guam
Контактная информация:

14 окт 2015, 06:40

На нашем сайте вы можете чувствовать себя в безопасности! Кроме того, мы используем зеркальные жесткие диски на все наши серверы, поэтому мы также взять резервную два раза в день на отдельных серверах. Мы используем ISPmanager, как на панели управления. ISPmanager является панель управления, которая позволяет легко управлять своей веб-сайт. С нами вы можете разместить столько веб-сайты и домены, которые вы хотите для учетной записи хостинга.
virtual hosting
Ответить