Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2013, 09:26   #1
HenryO
Пользователь
 
Регистрация: 10.04.2013
Сообщений: 21
По умолчанию Как из Excel запустить макрос в Word

Друзья, подскажите, как запустить из Excel другую процедуру, которая находится в Word?
Код ниже не дает результатов:

Sub WordApp()
Dim objDoc As Object

Set objDoc = GetObject(, "Word.Application")

objDoc.call Сохранение

End Sub
HenryO вне форума Ответить с цитированием
Старый 10.04.2013, 10:07   #2
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

HenryO, команда "GetObject" работает с запущенной программой. У вас программа "Word" запущена во время работы макроса?
Скрипт вне форума Ответить с цитированием
Старый 10.04.2013, 10:32   #3
HenryO
Пользователь
 
Регистрация: 10.04.2013
Сообщений: 21
По умолчанию

Да, конечно, приложение запущено. Связь с этим файлом устанавливается, т.е., например, спокойно получается туда вставить какой-либо текст. Вот запустить Call надо как-то по-другому, наверное. VB ругается именно на "Сохранение". Как мне кажется, он пытается запустить процедуру в Excel (а там такой процедуры нет).
HenryO вне форума Ответить с цитированием
Старый 10.04.2013, 10:47   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Код:
Sub WordApp()
Dim objDoc As Object

Set objDoc = GetObject(, "Word.Application")

objDoc.Run "Сохранить"

End Sub
у меня такой код запускает макрос в документе word. единственно, макрос должен быть в отдельном модуле, а не в коде документа.

з.ы. объект Application в Word не знаком с методом call
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 10.04.2013, 11:14   #5
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

HenryO, чтобы посмотреть синтаксис команды "Run" в программе "Word", в программе "Word", в VBA поставьте курсор на слово "Run" и нажмите клавишу "F1". Откроется справка, в которой есть примеры, как обращаться к процедурам программы "Word".
Скрипт вне форума Ответить с цитированием
Старый 10.04.2013, 12:57   #6
HenryO
Пользователь
 
Регистрация: 10.04.2013
Сообщений: 21
По умолчанию

Пробовал objDoc.Run "Сохранение" (и без кавычек тоже). Писал и в модуле проекта, и в модуле Normal.
И так тоже пробовал (ниже).

Sub WordApp()
Dim objDoc As Object

Set objDoc = GetObject(, "Word.Application")

objDoc.Run "'Отчеты март 2013.docm'!Module1.Сохранение"

End Sub

Все время выдает ошибку Run-time "Не удается запустить указанный макрос"

Макрос в ворде рабочий.

Sub Сохранение()
ThisDocument.SaveAs2 FileName:="C:\Users\hm\Desktop\Отче т344.pdf", fileformat:=wdFormatPDF
End Sub
Изображения
Тип файла: jpg Screenshot_1.jpg (49.2 Кб, 97 просмотров)
HenryO вне форума Ответить с цитированием
Старый 10.04.2013, 13:24   #7
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Удалил сообщение.

Последний раз редактировалось Скрипт; 10.04.2013 в 15:19.
Скрипт вне форума Ответить с цитированием
Старый 10.04.2013, 15:04   #8
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Да, чудеса творятся в Ворде!
Создал документ с макросом в Word2007, сохранил как DocWMacro.docm .
При запуске из Excel (или из окна Immediate самогО Ворда, неважно) работает:
Код:
application.run "Сохранение"
application.run "Module1.Сохранение"
application.run "'DocWMacro'!Module1.Сохранение"
application.run "'DocWMacro.doc'!Module1.Сохранение"
application.run "'ГЕНгнегнмц ку  кп'!Module1.Сохранение"
application.run "'78пп ?*ППп .doc'!Module1.Сохранение"
application.run "'DocWMacro.фффф'!Module1.Сохранение"
А при ПРАВИЛЬНОМ указании названия файла - НЕ РАБОТАЕТ:
Код:
application.run "'DocWMacro.docm'!Module1.Сохранение"
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 10.04.2013, 15:20   #9
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Значит вывод такой, что в программе "Word" в VBA-методе "Run" нельзя указывать путь и имя Word-документа, а нужно указывать только имя модуля и имя процедуры.

А пример из VBA-справки по методу "Run" содержит ошибку.
Скрипт вне форума Ответить с цитированием
Старый 11.04.2013, 07:12   #10
HenryO
Пользователь
 
Регистрация: 10.04.2013
Сообщений: 21
По умолчанию

Получилось наконец-то запустить макрос в Word-е. Не знаю почему, но первый код с объявлением переменной не заработал в итоге:
Код:
Sub WordApp()
Dim objDoc As Object

Set objDoc = GetObject(, "Word.Application")

objDoc.Run "Сохранение"

End Sub
Вместо этого заработал код без объявления какой-либо переменной:
Код:

Sub WordApp()

GetObject(, "Word.Application").Run "Сохранение"

End Sub
HenryO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос импорта из Excel to Word groder911 Microsoft Office Excel 10 06.08.2012 16:38
VBA макрос Excel to Word groder911 Помощь студентам 0 01.08.2012 16:55
Запустить макрос WORD посредством DDE Елена Гох Microsoft Office Word 0 12.02.2011 08:21
Помогите запустить глючащий макрос для WORD 2003 Gamekowal Microsoft Office Word 2 07.01.2010 00:08
Как запустить макрос при изменении другой книги Excel? Град Microsoft Office Excel 12 10.06.2008 10:01