2016-04-03 147 views
0

我需要創建一個VBA腳本,該腳本在啓動時在Outlook中運行,然後在兩分鐘之後運行。這裏所說: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.RunApplication.OnTime方法。

但是,您可以使用支持它的Object模型(如Excel)中的OnTime方法。也就是說,您可以從Excel中自動執行Outlook,但根據您希望在Outlook中實現的目標,您可能會被Outlook Object Model Guard阻止。

+0

謝謝!我可能會切換到一個腳本,它將運行在所有收到的電子郵件中,這總是一個(稍微差一些)的選項。 – richardsonralph