Outlook VBA - 错误处理和调试 - 运行宏的收件箱规则定期失败

问题描述 投票:0回答:1

我有一个收件箱规则,当消息“仅在此计算机上”到达时运行,该规则执行宏。

宏从发件人电子邮件地址中提取域。它还会覆盖内部用户对“Exchange”的 Exchange 响应

这允许我在收件箱中拥有一个带有电子邮件发件人域的自定义字段,我将其用于许多事情,包括排序、分类等。

问题是它定期失败,我不知道为什么。我需要捕获更多关于什么消息导致它无法找到模式和可能的修复的信息,除非您可以在代码本身中看到问题:

Public Sub ExtractDomain(Item As Outlook.MailItem)

  Dim oProp As Outlook.UserProperty
  Dim sDomain
  On Error Resume Next

  sDomain = Right(Item.SenderEmailAddress, Len(Item.SenderEmailAddress) - InStr(1,Item.SenderEmailAddress, "@"))
  If Left(sDomain, 66) = "/O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP (xxxxxxxxxxxxx)" Then sDomain = "Exchange"
  Set oProp = Item.UserProperties.Add("Domain", olText, True)
  oProp.Value = sDomain
  Item.Save
  Err.Clear

End Sub

当它失败时,我进入规则,编辑规则,不做任何更改,但再次保存它,重新启用它,然后它运行良好,直到下一次。

vba outlook dns rules
1个回答
0
投票

尝试删除

On Error Resume Next
,看看是否会出现更好的错误。或者实际显示错误:

Public Sub ExtractDomain(Item As Outlook.MailItem)

  Dim oProp As Outlook.UserProperty
  Dim sDomain
  On Error Resume Next

  sDomain = Right(Item.SenderEmailAddress, Len(Item.SenderEmailAddress) - InStr(1,Item.SenderEmailAddress, "@"))
  If Left(sDomain, 66) = "/O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP (xxxxxxxxxxxxx)" Then sDomain = "Exchange"
  Set oProp = Item.UserProperties.Add("Domain", olText, True)
  oProp.Value = sDomain
  Item.Save
  if Err.Number <> 0 Then
    MsgBox Rrr.Description
  End If
  Err.Clear

End Sub

我怀疑您在添加用户属性时遇到错误。

© www.soinside.com 2019 - 2024. All rights reserved.