Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Outlook VBA-移动到文件夹-正文文本_Vba_Outlook - Fatal编程技术网

Outlook VBA-移动到文件夹-正文文本

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

我试图创建一个脚本,从传入的电子邮件中搜索正文和发件人姓名,如果为true,则将电子邮件移动到子文件夹

我试图将此代码添加到此OutlookSession,但它不起作用

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。你不应该改变你正在循环的集合-但这是一个不同的问题。