Страница 1 из 3

Управление MS Excel с другого VBA приложения.

Добавлено: 14 дек 2007, 13:13
pilligrim
Уважаемые програмисты, собственно сабж:
У меня есть скрипт в MS Outlook, который сохраняет вложенные файлы из сообщений в определенную папку. Также есть реестр этих файлов в листе MS Excel. Ячейки гиперлинком линкуются к определенным файлам.
Теперь сама проблема, мне надо в скрипте Outlook запустить некий макрос (допустим HypLink )из MS Excel который автоматом делает линки. Но только не знаю что надо писать в Аутлуке.
Пожалуйста помогите.

Re: Управление MS Excel с другого VBA приложения.

Добавлено: 14 дек 2007, 13:19
Pavel55
Может как-то так.
Файл с макросом должен быть открыт!

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

Application.Run "Книга1.xls!Макрос1"

Re: Управление MS Excel с другого VBA приложения.

Добавлено: 14 дек 2007, 13:32
pilligrim
Pavel55 писал(а):Может как-то так.
Файл с макросом должен быть открыт!

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

Application.Run "Книга1.xls!Макрос1"
Так как скрипт запускается с Аутлука, мне надо указать что макрос находится в экселе. Как это указать? :confused:

Re: Управление MS Excel с другого VBA приложения.

Добавлено: 14 дек 2007, 14:02
Pavel55
Тогда так. У меня из под Outlook работает.
На диске 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

Re: Управление MS Excel с другого VBA приложения.

Добавлено: 14 дек 2007, 14:13
pilligrim
Спасибо, щяс протестирую отвечу.

Re: Управление MS Excel с другого VBA приложения.

Добавлено: 14 дек 2007, 14:55
pilligrim
Всё! отлично! Работает! Моя ошибка была в создании объекта. Пытался запустить не создавая объекта.
Еще вопросы:
А как можно запустить тоже самое но уже в открытом Экселе? Так как, эта книга у меня всегда открыта.
А можно ли передавать параметры макросу? например передать имя файла.
Заранее благодарен.

Re: Управление MS Excel с другого VBA приложения.

Добавлено: 14 дек 2007, 15:55
Pavel55
Вот, у меня так работает.

Есть открытый Excel файл с таким макросом

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

Sub Macro1(iStr As String)
    MsgBox iStr
End Sub
В Outlook в Tools - References добавить ссылку на Microsoft Excel 11.0 Object Library и запустить такой макрос

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

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

Re: Управление MS Excel с другого VBA приложения.

Добавлено: 14 дек 2007, 16:58
pilligrim
Круто.
2 Pavel55 Спасибо огромное.
Такое очучение что исходный код VB разрабатовался участниками данного форума. !-)

Re: Управление MS Excel с другого VBA приложения.

Добавлено: 14 дек 2007, 17:09
Pavel55
Да не за что ) До Вашего вопроса тут на форуме, я тоже не знал, как это можно сделать) Пришлось идти методом проб и ошибок ) Как, впрочем, и на другие вопросы на этом форуме)

P.S. Как Вы видите, в первом случае мы делали позднее связывание (Late Binding) и создавали объект Excel через CreateObject, а во втором случае мы уже использовали раннее связывание (Early Binding), но нам пришлось подключать библиотеку Excel в Tools-References и просто обращались к открытому приложению через GetObject.

Re: Управление MS Excel с другого VBA приложения.

Добавлено: 14 дек 2007, 17:13
pilligrim
Ну я могу сказать что когда не знаешь не все так просто.

Pavel55, плиз, узнав своим методом тЫка, подскажи мне, как запускать макрос в уже открытом экземпляре Эксель?

Спасибо.