在我的工作中,我们有一个票务系统,可以自动向我们发送标题为New Ticket Created: T20120803.0078
的票证,其中会生成号码。然后,我们通过电子邮件回复所有人,说我们正在处理机票。回复看起来像RE: New Ticket Created: T20120803.0072
。
我的Outlook设置为将所有故障单转发到一个名为Tickets
的文件夹中。我试图找出如何能够运行脚本或宏,以便在回复电子邮件时,它将回复和原始文件发送到另一个名为InProgress
的文件夹。
我去学校接受编程,但没有太多时间来解决这个问题。任何帮助将不胜感激。我认为这很容易。从主题行中获取数字并与其他票证进行比较。如果票证号码匹配,请移动它们。
答案 0 :(得分:2)
don't have a lot of time to figure this one out.
通常,在这种情况下,我们不会为人们构建代码,但可以帮助他们在他们挣扎的地方构建调整或完美代码。
那就是说,我对你的问题很感兴趣并想学习自己,所以我为你准备了一些东西。这应该会给你一个良好的开端,如果它还不是你所需要的那样。
更新:
第一部分甚至不需要VBA。您可以设置规则,将主题行中"RE: New Ticket Created"
的所有已发送邮件移至In Progress
文件夹。因此,您甚至不需要下面代码中的整个第一个IfF Then End If
块。 (我把它留作参考,目的)。
<强> CODE 强>
所有假设均基于您提供的设置。
将代码放在Outlook VBE中ThisOutlookSession对象的Application_ItemSend事件中。
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim olNameSpace As Outlook.NameSpace
Set olNameSpace = GetNamespace("MAPI")
Dim olDestFolder As Outlook.Folder
Set olDestFolder = olNameSpace.Folders("myMailbox@myCompany.com").Folders("In Progress")
If TypeName(Item) = "MailItem" Then 'if it's a mail item being sent
Dim olMailCopy As Outlook.MailItem
Set olMailCopy = Item.Copy 'copy the item so we can move it and still have it send
If InStr(1, olMailCopy.Subject, "New Ticket Created") > 0 Then '
olMailCopy.Move olDestFolder ' move copy of mail to folder
Dim strTicket As String
strTicket = Mid(olMailCopy.Subject, InStrRev(olMailCopy.Subject, ": ") + 2) 'just grab ticket id
End If
End If
Dim olLookUpFolder As Outlook.Folder
Set olLookUpFolder = olNameSpace.Folders("myMailbox@myCompany.com").Folders("Tickets")
Dim olMail As Outlook.MailItem
For Each olMail In olLookUpFolder.Items 'loop through Tickets folder to find original mail
If InStr(1, olMail.Subject, strTicket) > 0 Then 'look for unique ticket Id
olMail.Move olDestFolder ' move to InProgress folder
Exit For
End If
Next
End Sub