Управление MS Excel с другого VBA приложения.
Модератор: Naeel Maqsudov
Уважаемые програмисты, собственно сабж:
У меня есть скрипт в MS Outlook, который сохраняет вложенные файлы из сообщений в определенную папку. Также есть реестр этих файлов в листе MS Excel. Ячейки гиперлинком линкуются к определенным файлам.
Теперь сама проблема, мне надо в скрипте Outlook запустить некий макрос (допустим HypLink )из MS Excel который автоматом делает линки. Но только не знаю что надо писать в Аутлуке.
Пожалуйста помогите.
У меня есть скрипт в MS Outlook, который сохраняет вложенные файлы из сообщений в определенную папку. Также есть реестр этих файлов в листе MS Excel. Ячейки гиперлинком линкуются к определенным файлам.
Теперь сама проблема, мне надо в скрипте Outlook запустить некий макрос (допустим HypLink )из MS Excel который автоматом делает линки. Но только не знаю что надо писать в Аутлуке.
Пожалуйста помогите.
Может как-то так.
Файл с макросом должен быть открыт!
Файл с макросом должен быть открыт!
Код: Выделить всё
Application.Run "Книга1.xls!Макрос1"
Так как скрипт запускается с Аутлука, мне надо указать что макрос находится в экселе. Как это указать?Pavel55 писал(а):Может как-то так.
Файл с макросом должен быть открыт!
Код: Выделить всё
Application.Run "Книга1.xls!Макрос1"

Тогда так. У меня из под Outlook работает.
На диске C:\ есть файл Test.xls в нём есть процедура Macro1. Файл Test.xls - закрыт!
На диске C:\ есть файл Test.xls в нём есть процедура Macro1. Файл Test.xls - закрыт!
Код: Выделить всё
Sub Макрос1()
Dim objXls As Object
Set objXls = CreateObject("Excel.Application")
objXls.Workbooks.Open "C:\Test.xls"
objXls.Application.Run "Macro1"
'objXls.Application.Visible = True
objXls.Quit
Set objXls = Nothing
End Sub
Спасибо, щяс протестирую отвечу.
Всё! отлично! Работает! Моя ошибка была в создании объекта. Пытался запустить не создавая объекта.
Еще вопросы:
А как можно запустить тоже самое но уже в открытом Экселе? Так как, эта книга у меня всегда открыта.
А можно ли передавать параметры макросу? например передать имя файла.
Заранее благодарен.
Еще вопросы:
А как можно запустить тоже самое но уже в открытом Экселе? Так как, эта книга у меня всегда открыта.
А можно ли передавать параметры макросу? например передать имя файла.
Заранее благодарен.
Вот, у меня так работает.
Есть открытый Excel файл с таким макросом
В Outlook в Tools - References добавить ссылку на Microsoft Excel 11.0 Object Library и запустить такой макрос
Есть открытый Excel файл с таким макросом
Код: Выделить всё
Sub Macro1(iStr As String)
MsgBox iStr
End Sub
Код: Выделить всё
Sub Макрос2()
'В Outlook в Tools - References добавить ссылку на Microsoft Excel 11.0 Object Library
Dim objXls As New Excel.Application
Set objXls = GetObject(, "Excel.Application")
objXls.Application.Run "Macro1", "Hello" 'Hello - это параметр для Macro1
End Sub
Круто.
2 Pavel55 Спасибо огромное.
Такое очучение что исходный код VB разрабатовался участниками данного форума. !-)
2 Pavel55 Спасибо огромное.
Такое очучение что исходный код VB разрабатовался участниками данного форума. !-)
Да не за что ) До Вашего вопроса тут на форуме, я тоже не знал, как это можно сделать) Пришлось идти методом проб и ошибок ) Как, впрочем, и на другие вопросы на этом форуме)
P.S. Как Вы видите, в первом случае мы делали позднее связывание (Late Binding) и создавали объект Excel через CreateObject, а во втором случае мы уже использовали раннее связывание (Early Binding), но нам пришлось подключать библиотеку Excel в Tools-References и просто обращались к открытому приложению через GetObject.
P.S. Как Вы видите, в первом случае мы делали позднее связывание (Late Binding) и создавали объект Excel через CreateObject, а во втором случае мы уже использовали раннее связывание (Early Binding), но нам пришлось подключать библиотеку Excel в Tools-References и просто обращались к открытому приложению через GetObject.
Ну я могу сказать что когда не знаешь не все так просто.
Pavel55, плиз, узнав своим методом тЫка, подскажи мне, как запускать макрос в уже открытом экземпляре Эксель?
Спасибо.
Pavel55, плиз, узнав своим методом тЫка, подскажи мне, как запускать макрос в уже открытом экземпляре Эксель?
Спасибо.