Страница 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
Может как-то так.
Файл с макросом должен быть открыт!
Re: Управление MS Excel с другого VBA приложения.
Добавлено: 14 дек 2007, 13:32
pilligrim
Pavel55 писал(а):Может как-то так.
Файл с макросом должен быть открыт!
Так как скрипт запускается с Аутлука, мне надо указать что макрос находится в экселе. Как это указать?

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, плиз, узнав своим методом тЫка, подскажи мне, как запускать макрос в уже открытом экземпляре Эксель?
Спасибо.