为什么我不能访问共享邮箱的子文件夹?

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

我的目标是创建一个VBA脚本,当新电子邮件到达共享邮箱时,该脚本将自动触发,如果标题包含特定文本,则执行以下操作:1.将消息移到指定的子文件夹2.将所有Excel附件保存到桌面文件夹。

经过大量研究,我想到了以下代码并将其粘贴到ThisOutlookSession中:

Private WithEvents Items As Outlook.Items

Private Sub Application_Startup()

Dim myOlApp As Outlook.Application
Dim myNms As Outlook.NameSpace
Dim myFolder As Outlook.MAPIFolder
Dim myitem As Object
Dim myRecipient As Outlook.Recipient
Dim myExplorer As Outlook.Explorer
Dim SharedFolder As Outlook.MAPIFolder
Dim oMoveTarget As Outlook.MAPIFolder

Set myOlApp = CreateObject("Outlook.Application")
Set myNms = myOlApp.GetNamespace("MAPI")
Set myFolder = myNms.GetDefaultFolder(olFolderInbox)
Set myExplorer = myOlApp.ActiveExplorer
Set myExplorer.CurrentFolder = myFolder
Set myRecipient = myNms.CreateRecipient("shared mailbox")
Set SharedFolder = myNms.GetSharedDefaultFolder(myRecipient, olFolderInbox)
Set oMoveTarget = SharedFolder.Folders("specific subfolder where messages should be moved")  
Set Items = SharedFolder.Items   
End Sub

Private Sub Items_ItemAdd(ByVal item As Object)

On Error GoTo ErrorHandler
Dim Msg As Outlook.MailItem
Dim att As Attachment
Dim FileName As String
Dim intFiles As Integer
Dim myOlApp As Outlook.Application
Dim myNms As Outlook.NameSpace
Dim myFolder As Outlook.MAPIFolder
Dim myitem As Object
Dim myRecipient As Outlook.Recipient
Dim myExplorer As Outlook.Explorer
Dim SharedFolder As Outlook.MAPIFolder
Dim oMoveTarget As Outlook.MAPIFolder

If TypeName(item) = "MailItem" Then
    Set Msg = item
    If InStr(1, item.Subject, "specific text in subject") > 0 Then
            For Each att In item.Attachments
                    If InStr(att.DisplayName, ".xlsx") Then
                        FileName = "folderpath to desktop location\" & Trim(att.FileName)
                        att.SaveAsFile FileName
                        intFiles = intFiles + 1
                    End If
            Next
            item.Move oMoveTarget
    End If
End If
ProgramExit:
Exit Sub
ErrorHandler:
MsgBox Err.Number & " - " & Err.Description
Resume ProgramExit
End Sub

当我尝试手动运行代码(F5)或重新启动Outlook时,出现以下错误消息:运行时错误'-2147221233(8004010f)':尝试的操作失败。找不到对象。停止运行的行是在Private Sub Application_Startup()中设置了特定的子文件夹(oMoveTarget)时。如果我省略(或注释掉)对子文件夹的引用,该脚本将发挥出色的作用:保存从传入电子邮件到具有特定主题的共享邮箱的Excel附件。不知何故,我被允许访问并在共享邮箱上运行脚本,但被拒绝访问其子文件夹。在这个问题上的任何帮助将不胜感激。

outlook-vba
2个回答
1
投票

是否已在Exchange帐户属性对话框的“高级”选项卡上选中“下载共享文件夹”复选框?


0
投票

哇,超过4年后,这篇文章仍然有帮助。我一直在试图找出为什么我无法在5个小时内访问共享帐户子文件夹!谢谢,虽然我不认为以后会更多地使用Outlook Interop,但我会记住这一内容以供将来参考。

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