2016-02-04 16 views
1

我有一個三人組發送電子郵件訂單和報價給96個銷售代表的團隊。我們通過Outlook任務執行此操作。用於處理任務更新的Outlook腳本

在Outlook 2007中,我們注意到很多任務沒有在我們的結尾更新/完成。

因此,我通過Outlook規則運行腳本來處理所有傳入的任務更新,以查看這是否有助於解決問題。

該代碼運行良好,但我得到"rules in error: The operation failed",腳本的每幾次運行。下面是我使用的宏:

Sub taskupdateMacro(item As Outlook.MailItem) 

Dim olkApp, olkNS, olkTaskFolder, objItem, olkTaskUpdate, olkTask 
Dim objCount 
objCount = 0 

Set olkApp = CreateObject("Outlook.Application") 
Set olkNS = olkApp.GetNamespace("MAPI") 
olkNS.Logon "Outlook" 
Set olkTaskFolder = olkNS.GetDefaultFolder(6) 
For Each objItem In olkTaskFolder.Items 
    If (objItem.Class = 50 Or objItem.Class = 51 Or objItem.Class = 43) Then 
     objCount = objCount + 1 
     objItem.Display 
     objItem.Close 1 
    End If 
Next 

If objCount = 0 Then 
    MsgBox "No Task Related Emails to Open" 
End If 

Set objItem = Nothing 
Set olkTaskFolder = Nothing 
Set olkTaskRequest = Nothing 
Set olkTask = Nothing 
olkNS.Logoff 
Set olkNS = Nothing 
Set olkApp = Nothing 

End Sub 
+0

編輯你的規則 - 下一步 - 選擇行動'停止處理更多規則'看看是否有幫助。 – 0m3r

回答

0

規則是不可靠的,但試圖ItemAdd或NewMailEx看到,如果你清理你的代碼會發生什麼了。

Outlook已在運行,因此您不需要CreateObject,也不需要登錄。

Sub taskupdateMacro(item As mailItem) 

'Dim olkApp 

Dim olkNS As Namespace 
Dim olkTaskFolder As folder 
Dim objItem As Object 

'Dim olkTaskUpdate 
'Dim olkTask As TaskItem 

Dim objCount As Long 

objCount = 0 

'Set olkApp = CreateObject("Outlook.Application") 
'Set olkNS = olkApp.GetNamespace("MAPI") 

Set olkNS = GetNamespace("MAPI") 

'olkNS.Logon "Outlook" 

Set olkTaskFolder = olkNS.GetDefaultFolder(6) 

For Each objItem In olkTaskFolder.Items 
    If (objItem.Class = 50 Or objItem.Class = 51 Or objItem.Class = 43) Then 
    Debug.Print objItem.subject & " Class is: " & objItem.Class 

     objCount = objCount + 1 
     objItem.Display 
     objItem.Close 1 
    End If 
Next 

If objCount = 0 Then 
    MsgBox "No Task Related Emails to Open" 
End If 

Set objItem = Nothing 
Set olkTaskFolder = Nothing 

'Set olkTaskRequest = Nothing 
'Set olkTask = Nothing 
'olkNS.Logoff 

Set olkNS = Nothing 
'Set olkApp = Nothing 

End Sub 
+0

感謝您關於刪除創建對象和登錄的建議。最後,在腳本打開/關閉之後,如何更改代碼以刪除郵件項目? – Jmark

+0

使用For Each循環無法有效地刪除。這裏描述了一種減法方法。 http://stackoverflow.com/questions/27262798/for-each-loop-not-deleting-all-emails – niton