【发布时间】:2018-02-16 09:05:29
【问题描述】:
我在(here)下面找到了代码来让outlook VBA将发送的电子邮件保存到指定的文件夹。
代码运行良好,但是,只要它在发送的会议请求或会议回复上运行,就会出错。
我已经能够将第 9 行识别为发生错误的行:
Set Item.SaveSentMessageFolder = objFolder
然后,我的假设是Item.SaveSentMessageFolder 代码与会议类型对象不兼容。但是,我不确定会议类型对象的等效编码是什么。
是否可以修改此代码以以与处理消息类型对象相同的方式处理会议类型对象?
Private Sub Application_ItemSend(ByVal Item As Object, _
Cancel As Boolean)
Dim objNS As NameSpace
Dim objFolder As MAPIFolder
Set objNS = Application.GetNamespace("MAPI")
Set objFolder = objNS.PickFolder
If TypeName(objFolder) <> "Nothing" And _
IsInDefaultStore(objFolder) Then
Set Item.SaveSentMessageFolder = objFolder
End If
Set objFolder = Nothing
Set objNS = Nothing
End Sub
Public Function IsInDefaultStore(objOL As Object) As Boolean
Dim objApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim objInbox As Outlook.MAPIFolder
On Error Resume Next
Set objApp = CreateObject("Outlook.Application")
Set objNS = objApp.GetNamespace("MAPI")
Set objInbox = objNS.GetDefaultFolder(olFolderInbox)
Select Case objOL.Class
Case olFolder
If objOL.StoreID = objInbox.StoreID Then
IsInDefaultStore = True
End If
Case olAppointment, olContact, olDistributionList, _
olJournal, olMail, olNote, olPost, olTask
If objOL.Parent.StoreID = objInbox.StoreID Then
IsInDefaultStore = True
End If
Case Else
MsgBox "This function isn't designed to work " & _
"with " & TypeName(objOL) & _
" items and will return False.", _
, "IsInDefaultStore"
End Select
Set objApp = Nothing
Set objNS = Nothing
Set objInbox = Nothing
End Function
【问题讨论】:
-
感谢@timwilliams,链接中的结论是,“我认为您不能将此属性用于传出会议请求。”我同意这个结论。我想知道是否可以修改上面的代码以达到相同的效果(不使用 SaveSentMessageFolder 属性)。
-
我对在 Outlook 中处理约会不太熟悉:我想您可以尝试仅移动项目?
-
MeetingItem 对象确实具有 SaveSentMessageFolder 属性。确切的错误是什么?
-
@DmitryStreblechenko - 现在我一直在修改它,我似乎无法完全显示错误消息。宏正在运行且没有错误消息,但约会项目仍未移动到指定文件夹。当我在创建会议请求时在即时窗口中输入以下代码时,它返回运行时错误“438”:“对象不支持此属性或方法”。
debug.Print application.ActiveInspector.CurrentItem.SaveSentMessageFolder
标签: vba email outlook office365