Vba outlook宏-Item.senderName中的运行时错误

Vba outlook宏-Item.senderName中的运行时错误,vba,outlook,Vba,Outlook,我有下面的宏 Private WithEvents MySents As Outlook.Items Private Sub Application_Startup() Set MySents = Session.GetDefaultFolder(olFolderSentMail).Items End Sub Private Sub MySents_ItemAdd(ByVal Item As Object) Dim objNS As Outlook.NameSpace Dim target

我有下面的宏

Private WithEvents MySents As Outlook.Items

Private Sub Application_Startup()
Set MySents = Session.GetDefaultFolder(olFolderSentMail).Items
End Sub

Private Sub MySents_ItemAdd(ByVal Item As Object)

Dim objNS As Outlook.NameSpace
Dim targetFolder As Outlook.MAPIFolder

Set objNS = Outlook.GetNamespace("MAPI")

If TypeOf Item Is Outlook.MailItem Then
   If Item.SenderName = "Sender 1" Then
      Set targetFolder = objNS.Folders("Folder 1").Folders("Sent Items")
      Set newItem = Item.Copy
      newItem.Move targetFolder
   End If

   If Item.SenderName = "Sender 2" Then
      Set targetFolder = objNS.Folders("Folder 2").Folders("Sent Items")
      Set newItem = Item.Copy
      newItem.Move targetFolder
   End If
End If

End Sub
上周这个很好。现在,当宏运行时,我得到一个“运行时错误-2147221241(80040107)操作失败”

查看它失败的调试器

If Item.SenderName =
如果查看“监视”窗口中的项目,大多数属性的值中都有“操作失败”

最奇怪的是消息仍然会被复制

有人看到我在做什么傻事吗?

该属性返回一个字符串,指示Outlook项目的发件人的显示名称。它是在邮件项目发送后设置的。新项目(未发送)未设置此属性

您可以考虑使用允许设置文件夹对象的属性,该文件夹对象表示在发送邮件后将保存电子邮件副本的文件夹。例如,您可以处理ItemSend事件,您可以在其中设置此属性

 Sub SetSentFolder()  
  Dim myItem As Outlook.MailITem 
  Dim myResponse As Outlook.MailITem 
  Dim mpfInbox As Outlook.Folder 
  Dim mpf As Outlook.Folder 
  Set mpfInbox = Application.Session.GetDefaultFolder(olFolderInbox) 
  Set mpf = mpfInbox.Folders.Add("SaveMyPersonalItems") 
  Set myItem = Application.ActiveInspector.CurrentItem 
  Set myResponse = myItem.Reply 
  myResponse.Display 
  myResponse.To = "Eugene Astafiev" 
  Set myResponse.SaveSentMessageFolder = mpf 
  myResponse.Send 
 End Sub

感谢您的回复,但邮件已按“已发送邮件”文件夹中的方式发送。重点是宏即使在抛出错误后也会执行它需要执行的操作。发送的项目仍会被复制到其他文件夹中。。我不明白为什么上周天气很好。是的,现在我很困惑。。如果我将“MsgBox(“messagemoved”)”添加到endsub之前的末尾,则不会引发运行时错误。。。这是怎么回事?我忘了说我在多台计算机上得到了运行时错误。感谢哪一行代码生成错误?你试过调试代码吗?