Vba 答复时删除和移动原始电子邮件的Outlook宏

Vba 答复时删除和移动原始电子邮件的Outlook宏,vba,outlook,Vba,Outlook,我正在尝试实现此代码,但它不起作用,请告知。我有一个新的票证文件夹,一旦从新的票证文件夹回复邮件必须移动到完成的文件夹 我正在寻找的代码,宏,直接移动所有回复的电子邮件到一个完整的文件夹 在以下位置获取错误消息:olMail.Move olDestFolder'移动到InProgress文件夹 我正在使用的代码: Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) Dim olNameSpace A

我正在尝试实现此代码,但它不起作用,请告知。我有一个新的票证文件夹,一旦从新的票证文件夹回复邮件必须移动到完成的文件夹

我正在寻找的代码,宏,直接移动所有回复的电子邮件到一个完整的文件夹

在以下位置获取错误消息:
olMail.Move olDestFolder'移动到InProgress文件夹

我正在使用的代码:

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("xxx@xxx.com").Folders("In Progress")

Dim olLookUpFolder As Outlook.Folder
Set olLookUpFolder = olNameSpace.Folders("xxx@xxx.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

从评论“strTicket-阅读主题行,查看特定主题行是否作为回应”。
您需要
strTicket=“基于Item.Subject的文本”

If InStr(1, olMail.Subject, strTicket) > 0
例如:
项目。主题“Re:Ticket#123456”
斯特里克的电话号码是123456

If InStr(1, olMail.Subject, strTicket) > 0 Then 'look for unique ticket Id in olLookUpFolder.Items
无需提取唯一的票证Id。
olMail.Subject
是唯一的,将位于
项中。Subject

如果项目主题为“Re:Ticket#123456”
然后是olMail,主题是“票#123456”

颠倒InStr中搜索项的顺序

私有子应用程序\u ItemSend(ByVal项作为对象,取消作为布尔值)
将名称空间设置为名称空间
设置olNameSpace=GetNamespace(“MAPI”)
Dim olDestFolder作为文件夹
设置olDestFolder=olNameSpace.Folders(“xxx@xxx.com)文件夹(“正在进行中”)
Dim olLookUpFolder作为文件夹
设置olLookUpFolder=olNameSpace.Folders(“xxx@xxx.com)文件夹(“票据”)
“olMail是一个类。避免将其作为变量名
'将邮件作为邮件项目发送
Dim olObj作为对象的Outlook项目不一定是邮件项目
对于olLookUpFolder.Items中的每个olObj,通过Tickets文件夹循环查找原始邮件
如果olObj.Class=olMail,则
如果InStr(1,Item.Subject,olObj.Subject)>0,则“在Item.Subject中查找olObj.Subject”
olObj.Move olDestFolder'移动到InProgress文件夹
退出
如果结束
如果结束
下一个
端接头

如果预览窗格处于打开状态,则

错误:“此方法不能与内联响应邮件项目一起使用。”

此代码首次重新启动Outlook并禁用VBA。随后,它只重新启动了Outlook。如果得到类似的结果,您可能会决定自己关闭预览窗格,以便不调用预览窗格检查

如果InStr(1,Item.Subject,olObj.Subject)>0,则“在Item.Subject中查找olObj.Subject”
如果ActiveExplorer.IsPaneVisible(olPreview)=True,则
'隐藏预览窗格
' https://docs.microsoft.com/en-us/office/vba/api/outlook.explorer.ispanevisible
ActiveExplorer.ShowPane预览,False
olObj.Move olDestFolder'移动到InProgress文件夹
'显示预览窗格
ActiveExplorer.ShowPane预览,真
其他的
olObj.Move olDestFolder'移动到InProgress文件夹
如果结束
退出
如果结束
更多关于.

的信息,请参阅评论“strTicket-阅读主题行,并查看特定主题行是否作为回应”。
您需要
strTicket=“基于Item.Subject的文本”

If InStr(1, olMail.Subject, strTicket) > 0
例如:
项目。主题“Re:Ticket#123456”
斯特里克的电话号码是123456

If InStr(1, olMail.Subject, strTicket) > 0 Then 'look for unique ticket Id in olLookUpFolder.Items
无需提取唯一的票证Id。
olMail.Subject
是唯一的,将位于
项中。Subject

如果项目主题为“Re:Ticket#123456”
然后是olMail,主题是“票#123456”

颠倒InStr中搜索项的顺序

私有子应用程序\u ItemSend(ByVal项作为对象,取消作为布尔值)
将名称空间设置为名称空间
设置olNameSpace=GetNamespace(“MAPI”)
Dim olDestFolder作为文件夹
设置olDestFolder=olNameSpace.Folders(“xxx@xxx.com)文件夹(“正在进行中”)
Dim olLookUpFolder作为文件夹
设置olLookUpFolder=olNameSpace.Folders(“xxx@xxx.com)文件夹(“票据”)
“olMail是一个类。避免将其作为变量名
'将邮件作为邮件项目发送
Dim olObj作为对象的Outlook项目不一定是邮件项目
对于olLookUpFolder.Items中的每个olObj,通过Tickets文件夹循环查找原始邮件
如果olObj.Class=olMail,则
如果InStr(1,Item.Subject,olObj.Subject)>0,则“在Item.Subject中查找olObj.Subject”
olObj.Move olDestFolder'移动到InProgress文件夹
退出
如果结束
如果结束
下一个
端接头

如果预览窗格处于打开状态,则

错误:“此方法不能与内联响应邮件项目一起使用。”

此代码首次重新启动Outlook并禁用VBA。随后,它只重新启动了Outlook。如果得到类似的结果,您可能会决定自己关闭预览窗格,以便不调用预览窗格检查

如果InStr(1,Item.Subject,olObj.Subject)>0,则“在Item.Subject中查找olObj.Subject”
如果ActiveExplorer.IsPaneVisible(olPreview)=True,则
'隐藏预览窗格
' https://docs.microsoft.com/en-us/office/vba/api/outlook.explorer.ispanevisible
ActiveExplorer.ShowPane预览,False
olObj.Move olDestFolder'移动到InProgress文件夹
'显示预览窗格
ActiveExplorer.ShowPane预览,真
其他的
olObj.Move olDestFolder'移动到InProgress文件夹
如果结束
退出
如果结束

有关的更多信息。

错误代码和消息是什么?感谢并感谢您的快速响应。您在哪里定义
strTicket
,以及发生错误时它的值是什么