2016-02-04 17 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