へっぽこエンジニアの覚え書き

主に、バッチとTeraTermマクロのことについて書きます。

Outlook VBA でのwait

VBAといえばExcelしかないみたいにExcelVBAのことがたくさん出できますが、

OutlookPowerPointだってOffice製品なのでVBAがあります。

でも、ほぼ検索できません。

今回、ExcelVBAで動いていたコードをOutlookに移すことになりましたが、

Application.Wait(Now+TimeValue("0:00:01"))

というコードが、

f:id:gbsdjpagiefuihzds:20191004215209p:plain

と実行時エラー438となりOutlookでは動きませんでした。

 

OutlookVBAで動くコードをご紹介します。

 'PtrSafeは64bitで↓動くコードです。

Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As Long)

Sub test()
Dim time As Long

'ミリ秒ですので、1000ミリ秒=1秒です。
time = 3000

Sleep time

MsgBox time & "ミリ秒経ちました。"


End Sub

 

追記

こうしてもいけるみたいです。

Set appExcel = CreateObject("Excel.Application")
appExcel.Wait (Now + TimeValue("0:00:03"))

 

CreateObject("Excel.Application")すれば、ExcelのApplicationオブジェクトをOutlookVBAで呼び出せるみたいです。

ネットで参考にするVBAExcelのものが多いので、

参考にするときに動かなくて困ってましたが、

CreateObject("Excel.Application")すれば、実行時エラー438は回避できそうです。