Accessからoutlookのプロシージャーを実行する方法は?
AccessからExcelなら、エクセルに
************************
Sub エクセルマクロ()
MsgBox "a"
End Sub
************************
を作り、アクセス側で、
************************
Private Sub AccessからExcel()
Dim xlsWB As Object
Set xlsWB = GetObject("D:\My Documents\up\エクセル.xls")
xlsWB.Application.Run xlsWB.Name & "!エクセルマクロ"
Set xlsWB = Nothing
End Sub
************************
を実行すると、エクセル側のプロシージャーが実行されますが、
Accessからoutlookの場合は、どうすればいいでしょうか?
Outlookの標準モジュールに、
************************
Sub Outlookマクロ()
MsgBox "a"
End Sub
を作っても、
アクセス側で、
Private Sub AccessからExcel()
Dim xlsWB As Object
Set xlsWB = GetObject("D:\My Documents\up\ ")‘ここをどうすればいいかわからない。
xlsWB.Application.Run xlsWB.Name & "! Outlookマクロ"
Set xlsWB = Nothing
End Sub
************************
と言うコードしか作れなくて、詰んでしまいます。
Accessからoutlookのプロシージャーを実行する方法をご教授ください。よろしくお願いします。
OutlookのプロシージャをVBAで外部から実行する
有効な方法はないようです。海外でもこのことに
関していくつかのQ&Aがありますが、これだという
方法は見つかりません。
ただ、無理やりにもするとなると、Outlookの標準
モジュールではなく、ThisOutlookSessionに、たとえば
Public Sub myout()
MsgBox "あいうえお"
End Sub
を設定し、Accessでは、
Sub test()
On Error Resume Next
Dim OutApp As Object
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
OutApp.myout
OutApp.Session.Logoff
Set OutApp = Nothing
End Sub
のようにします。
実行の方法は、まずAccessを終了しておいて、
Outlookを起動し、OutlookのThisOutlookSessionを
マクロを有効にして開きます。
次に、Accessを起動してファイルをオープン
testプロシージャを実行し、エンタキーを何度か
叩けば、メッセージボックスが表示されます。
これ以外の順序ですると大抵エラーが出ます。
したがって、外部のVBAでOutlookを操作する場合は
Outlookのプロシージャを直接走らせるような方法は
無理だと思われます。
名前空間の利用により、フォルダの中身の取り出し、
あるいはメールの送信などならば、外部からのVBA
でもできると思いますが。
お礼
ありがとうございました。