outlook宏中的运行时错误- item . sendname



我有以下宏;

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 =

如果我看一下项目在观察窗口大多数属性有"操作失败"的值。

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

有谁能看出我在做什么蠢事吗?

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

你可以考虑使用SaveSentMessageFolder属性,该属性允许设置一个Folder对象,该对象表示发送后电子邮件副本将保存在其中的文件夹。例如,您可以在处理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

最新更新