这是我在论坛上的第一个帖子,所以我希望我能根据需要进行所有操作。
[几年以来,我们在公司使用vba Outlook宏将已发送的邮件发送到文件夹。按下发送按钮指定文件夹。创建宏时,我们曾经在按下send后直接保存文件,但是只有草稿文件保存到了指定的文件夹中。在此之前,我们启动了一个处理程序,以检查何时将邮件添加到“已发送邮件”文件夹中,以便可以将该邮件保存到指定的文件夹中。从昨天开始,只有一部分同事在运行此宏时开始出现Type mismatch错误。今天,另一对同事也遇到了这个问题。我们大多数人仍然可以使用该宏而不会出现任何错误。
我通过创建一个更简单的宏将问题缩小到initialize_handler本身。因此,现在发送任何电子邮件时,我都会为“已发送邮件”文件夹中的项目初始化一个处理程序。将项目添加到“已发送邮件”文件夹后,将出现一个消息框,告诉我已添加项目。
类型不匹配错误是在“设置myOlItems = ....”上创建的。
Public WithEvents myOlItems As Outlook.Items
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Call Initialize_handler
End Sub
Public Sub Initialize_handler()
Set myOlItems = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderSentMail).Items
End Sub
Private Sub myOlItems_ItemAdd(ByVal ObjectSent As Object)
MsgBox "Item is added to Sent Mails"
End Sub
我希望有人对此有解决方案。我无法找出导致错误的原因?
谢谢!
我建议通过在单独的代码行中声明每个属性或方法调用,从打破属性和方法调用的链开始。因此,我们将能够找出哪些属性或方法调用失败。