这里有很多关于这方面的问题已得到解答,但我找不到任何与我的情况相关的问题。由于我是VBA的新手,我确信这很简单,我不知道。我甚至完成了这里的步骤,以确保我可以访问DAO(在我的情况下为3.6):
http://support.microsoft.com/en-us/kb/163475
有人可以帮我弄清楚下面我的VBA脚本出了什么问题吗?
我正试图从电子邮件的主题行中删除一堆无用的文本,因为它进入我的收件箱。请注意,具有此主题的项目将落在我的收件箱中的各个子文件夹中,以防重要:
Sub ChangeSubject()
If Left(Item.subject, 31) = "Your Work Item Changed: " Then
Item.subject = Right(Item.subject, Len(Item.subject - 31))
End If
End Sub
尝试从VBA编辑器运行此命令会导致运行时错误“424”消息。请注意,我在Windows上使用Outlook 2013.
答案 0 :(得分:0)
这里有代码来查看我引用的新项目。
Private Sub Items_ItemAdd(ByVal Item As Object)
On Error GoTo ErrorHandler
Dim Msg As Outlook.MailItem
Dim emailSubject As String
If TypeOf Item Is MailItem Then
Set Msg = Item
emailSubject = Msg.Subject
'put additional code here
End If
ErrorHandler:
MsgBox Err.Number & " - " & Err.Description
End Sub
*根据GSerg的评论编辑了MailItem。
答案 1 :(得分:0)
目前尚不清楚用于处理Outlook中的新邮件的事件。无论如何,我可以建议以下方法来完成工作:
在Outlook中创建一个可以运行VBA宏的规则,您可以在其中更改主题行。无需以编程方式检查每个传入的邮件项目。仅当传入的电子邮件满足您的条件时,才会调用VBA宏。宏sub应该如下所示:
public sub text(mail as MailItem)
' do whatever you need
end sub
邮件对象代表传入电子邮件的位置。
处理在收件箱中收到新项目时触发的Application类的NewMailEx事件。当新邮件到达收件箱时以及客户端规则处理发生之前,将触发NewMailEx事件。您可以使用EntryIDCollection数组中返回的条目ID来调用NameSpace.GetItemFromID方法并处理该项。请谨慎使用此方法,以尽量减少对Outlook性能的影响。但是,根据客户端计算机上的设置,在新邮件到达收件箱后,垃圾邮件过滤和将新邮件从收件箱移动到另一个文件夹的客户端规则等过程可能会异步发生。您不应该假设在这些事件发生后,您将始终获得收件箱中项目数量的一项增加。
也可以使用ItemAdd。但如果同时添加多个项目(超过16个),则不会触发。