Страницы: 1
RSS
Запуск макроса Outlook из Excel
 
Из Outlook макросы Excel запускаю без проблем. А с сабжем беда
Или я многого хочу? У меня

В Excel

Код
Sub test()    
Dim oOutlook As Object    
Set oOutlook = CreateObject("Outlook.Application")    
oOutlook.Application.TestRunMacroOutlook
End Sub

В Outlook (в ThisOutlookSession)

Код
Public Sub TestRunMacroOutlook()    
MsgBox 1
End Sub

Делаю так, поскольку единственный намёк, как это сделать, нашёл вот здесь https://www.planetaexcel.ru/forum/?PAGE_NAME=read&FID=8&TID=38653
Там используется вот такая недокументированная возможность "Outlook.Application.macro1"
Я получаю ошибку Run-time error '438': Object doesn't support this property or method
Офис 2013

Помогите, пожалуйста
 

Кажется, что это не работает ... и не будет (?) ... попробуйте суррогат:

ThisOutlookSession:

Код
Private Sub Application_Startup()
    Call makro1
End Sub

Public Sub makro1()
    MsgBox "1"
End Sub

Excel:

Код
Sub abc_xyz()
    Dim x
    x = Shell("C:\Program Files\Microsoft Office\OfficeXY\OUTLOOK.EXE", vbNormalFocus)
End Sub

"C:\Program Files\Microsoft Office\OfficeXY\OUTLOOK.EXE"

(или любой другой путь доступа, если пользовательский)

где XY - версия вашего Office

 
Цитата
ocet p написал:
попробуйте суррогат
Это не совсем то, конечно ) Открывается дополнительное окно Аутлука и нужно ещё больше изголиться, чтобы передать параметр в его макрос. Но спасибо за идею! Сгодится, если уж совсем припрёт )
 
"Как не палочкой в него, так может камушком ?"   :)
Второй суррогат:

Excel - Module1:
Код
Option Explicit

Const pth$ = "C:\Program Files\Microsoft Office\OfficeXY\OUTLOOK.EXE"
Const strpath$ = "C:\Temp\AgentExcel.txt"

Sub para_ersatz_surrogat()
    Dim prmtr: prmtr = "Parametr iz Excel z " & Now
    '...
    Dim nmbr As Byte: nmbr = FreeFile(0)
    Open strpath For Output Access Write Lock Write As #nmbr
    Print #nmbr, prmtr
    Close #nmbr
    '
    Dim x: x = Shell(pth, vbNormalFocus)
End Sub

Outlook - ThisOutlookSession:
Код
Option Explicit

Const strpath$ = "C:\Temp\AgentExcel.txt"

Private Sub Application_Startup()
    If Dir(strpath, vbNormal) = "" Then Exit Sub
    Dim prmtr$, nmbr As Byte: nmbr = FreeFile(0)
    Open strpath For Input Access Read Lock Read As #nmbr
    Line Input #nmbr, prmtr
    Close #nmbr
    Kill strpath
    Call Mak1(prmtr)
End Sub

Public Sub Mak1(Optional prmtr = "Net parametra iz Excel")
    MsgBox prmtr
End Sub

pth и strpath - Вы определяете это сами
Страницы: 1
Наверх