Outlook VBA-移动到文件夹-正文文本
我试图创建一个脚本,从传入的电子邮件中搜索正文和发件人姓名,如果为true,则将电子邮件移动到子文件夹 我试图将此代码添加到此OutlookSession,但它不起作用Outlook VBA-移动到文件夹-正文文本,vba,outlook,Vba,Outlook,我试图创建一个脚本,从传入的电子邮件中搜索正文和发件人姓名,如果为true,则将电子邮件移动到子文件夹 我试图将此代码添加到此OutlookSession,但它不起作用 Public Sub MailtoFolder(Item As Outlook.MailItem) Dim myNameSpace As Outlook.NameSpace Dim myInbox As Outlook.MAPIFolder Dim myDestFolder As Outlook.MAP
Public Sub MailtoFolder(Item As Outlook.MailItem)
Dim myNameSpace As Outlook.NameSpace
Dim myInbox As Outlook.MAPIFolder
Dim myDestFolder As Outlook.MAPIFolder
Set myNameSpace = Application.GetNamespace("MAPI")
Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
Set myDestFolder = myInbox.Folders("xTest")
If InStr(Item.Body, "Test123") > 0 And Item.SenderName = "Jon" Then
Item.Move myDestFolder
End If
Set myDestFolder = Nothing
Set myInbox = Nothing
Set myNameSpace = Nothing
End Sub
你知道我哪里出错了吗?到目前为止,你的“项目”还没有设置好。
如果您希望将此应用于当前打开的电子邮件,这将是例如
Set Item=Application.ActiveExplorer.Selection.Item(1)
如果您希望循环浏览文件夹中的所有邮件,则需要严格执行以下操作:
Set myDestFolder = myInbox.Folders("xTest")
For Each mailItem in myDestFolder.Items
' ... do your magic
Next mailItem
您的“项目”尚未设置。
如果您希望将此应用于当前打开的电子邮件,这将是例如
Set Item=Application.ActiveExplorer.Selection.Item(1)
如果您希望循环浏览文件夹中的所有邮件,则需要严格执行以下操作:
Set myDestFolder = myInbox.Folders("xTest")
For Each mailItem in myDestFolder.Items
' ... do your magic
Next mailItem
您确实意识到您可以在outlook中创建规则,该规则扫描收到的邮件,然后在邮件到达主收件箱之前将电子邮件移动到特定的子文件夹?您遇到了什么错误,执行到了什么程度?您是否设置了要调试的断点?我设置了,但您不能添加“电子邮件正文文本不包含特定单词”之类的规则。此外,我想在上面的代码运行后添加更多的条件。我没有得到错误。它在运行,但什么也没发生。当我设置断点项目时。Body=”“我不知道你为什么会意识到你可以在outlook中创建规则,扫描传入邮件,然后在邮件到达你的主收件箱之前将电子邮件移动到特定的子文件夹?你遇到了什么错误,执行到了什么程度?您是否设置了要调试的断点?我设置了,但您不能添加“电子邮件正文文本不包含特定单词”之类的规则。此外,我想在上面的代码运行后添加更多的条件。我没有得到错误。它在运行,但什么也没发生。当我设置断点项目.Body=”“时,我不知道在公共子MailtoFolder(项目为Outlook.MailItem)中设置了什么项目。移动或删除项目时,也不要对每个项目使用。向后计数或重复处理项目1,直到没有更多的项目。在更改循环的索引(对于int i=…)时,倒退是正确的。尽管如此,“Item”并不仅仅设置为一个看似传递的参数。取决于您从何处调用该子文件夹。您不应该更改正在循环的集合-但这是另一个问题。项目在公共子邮件文件夹(项目名为Outlook.MailItem)中设置。移动或删除项目时,也不要对每个项目使用。向后计数或重复处理项目1,直到没有更多的项目。在更改循环的索引(对于int i=…)时,倒退是正确的。尽管如此,“Item”并不仅仅设置为一个看似传递的参数。这取决于你从哪里调用sub。你不应该改变你正在循环的集合-但这是一个不同的问题。