2016-04-03 20 views
0

起動時にOutlookで実行され、その後は2分間隔で実行されるVBAスクリプトを作成する必要があります。ここに行く:VBA起動時および実行間隔でコードを実行

Private Sub Application_Startup() 
Call doThis 
End Sub 

Private Sub checkEmail(Item As Outlook.MailItem) 
    'lots of code here 
End Sub 

Sub doThis() 

Dim myInbox     As Outlook.Folder 
Dim ToPrint     As Outlook.Folder 
Dim myNameSpace    As NameSpace 
Dim objItems    As Outlook.Items 
Dim objItem     As Outlook.MailItem 

Set myNameSpace = Application.GetNamespace("MAPI") 
Set ToPrint = myNameSpace.GetDefaultFolder(olFolderInbox).Folders("ToPrint") 
Set objItems = ToPrint.Items 

For Each objItem In objItems 
Call checkEmail(objItem) 
Next 

Application.Ontime Now + TimeValue("00:02:00"), "doThis" 

Set myInbox = Nothing 
Set ToPrint = Nothing 
Set myNameSpace = Nothing 
Set objItem = Nothing 
Set objItems = Nothing 

End Sub 

のでコードは、私はこの行を取得する場合を除いて、うまく動作します:

Application.Ontime Now + TimeValue("00:02:00"), "doThis" 

この時点で、私は、実行時エラー438が出る:「オブジェクトはこの機能をサポートしていません。プロパティまたはメソッド。

誰でもアイデアがありますか?私はVBAの初心者ですが、ここ数週間で多くのことを学びました。私は助けに感謝します。

答えて

1

Outlookは、Application.RunまたはApplication.OnTimeの方法をサポートしていません。

しかし、Excelのように、それをサポートするオブジェクトモデルのOnTimeメソッドを使用できます。つまり、ExcelからOutlookを自動化しますが、Outlookで達成したいものによっては、Outlook Object Model Guardによってブロックされる可能性があります。

+0

ありがとうございました!私はおそらく常に(少し悪い)オプションだったすべての着信電子メールで実行されるスクリプトに切り替えるでしょう。 – richardsonralph

関連する問題