【问题标题】:VBScript - check if mailItem is still viableVBScript - 检查 mailItem 是否仍然可行
【发布时间】:2018-03-25 13:25:17
【问题描述】:

我的一个脚本遇到了问题。 该脚本自动化我们的共享邮箱(outlook)。它会自动将邮件分配给正确的人。

每次脚本运行时,它都会循环文件夹中的所有邮件并检查它是否有一个类别。如果没有,它会将其分配给正确的用户。 问题是,当运行脚本时没有类别的邮件被拖到另一个文件夹时,它会在尝试执行 mail.Categories 时引发错误。Categories

行:222 错误:由于错误 8004010f,无法完成操作。

有没有办法检查 mailItem 是否仍然可行?

我尝试使用 IsEmpty,但 msgbox 没有触发。

Set outlook = CreateObject("Outlook.Application")
Set namespace = outlook.GetNameSpace("MAPI")

Set Account = namespace.Folders("accountName")
Set Inbox = argentaAccount.Folders("Inbox")

For Each mail in Inbox.Items

    If IsEmpty(mail) Then
        MsgBox("test")
    End If

    'check if item has a category'
    If mail.Categories <> "" Then
        'has a category'
    Else
        'Execute mailhandling code'
    End If
Next

如果有人有任何解决方案,我将永远感激不尽。

【问题讨论】:

    标签: vbscript mailitem


    【解决方案1】:

    以此为线索:

    If IsEmpty(mail) Then
    

    VBScript 可能与 VBA 一样工作,其中 For Each 的工作方式如下:

    For i = 1 to Inbox.Items.Count
    

    当项目 1 被移动(或删除)时,项目 2 移动到位置 1。在下一个循环中,处理位置 2 和项目 3。每隔一个项目都会被跳过。在循环的后半部分,没有要处理的内容。

    在 VBA 中处理此问题的一种方法是按相反的顺序执行:

    For i = Inbox.Items.Count to 1 step -1
        Set mail = Inbox.Items(i)
        If mail.Categories <> ""
    

    【讨论】:

      猜你喜欢
      • 2013-12-31
      • 2015-09-12
      • 2016-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多