【问题标题】:How to set reference to shared inbox folder?如何设置对共享收件箱文件夹的引用?
【发布时间】:2020-06-24 21:15:19
【问题描述】:

我在另一个搜索中找到了这段代码,但是当我运行它时,我得到“没有这样的文件夹”错误。

我想统计共享收件箱文件夹中的电子邮件。谁能建议如何更改此代码以完成此操作?

Sub HowManyEmails()

    Dim objOutlook As Object, objnSpace As Object, objFolder As MAPIFolder
    Dim EmailCount As Integer
    Set objOutlook = CreateObject("Outlook.Application")
    Set objnSpace = objOutlook.GetNamespace("MAPI")

        On Error Resume Next
        Set objFolder = objnSpace.Folders("Personal Folders").Folders("Inbox").Folders("report's").Folders("Customer") 
        If Err.Number <> 0 Then
        Err.Clear
        MsgBox "No such folder."
        Exit Sub
        End If

    EmailCount = objFolder.Items.Count

    MsgBox "Number of emails in the folder: " & EmailCount, , "email count"

    Dim dateStr As String
    Dim myItems As Outlook.Items
    Dim dict As Object
    Dim msg As String
    Set dict = CreateObject("Scripting.Dictionary")
    Set myItems = objFolder.Items
    myItems.SetColumns ("SentOn")
    ' Determine date of each message:
    For Each myItem In myItems
        dateStr = GetDate(myItem.SentOn)
        If Not dict.Exists(dateStr) Then
            dict(dateStr) = 0
        End If
        dict(dateStr) = CLng(dict(dateStr)) + 1
    Next myItem

    ' Output counts per day:
    msg = ""
    For Each o In dict.Keys
        msg = msg & o & ": " & dict(o) & " items" & vbCrLf
    Next
    MsgBox msg

    Set objFolder = Nothing
    Set objnSpace = Nothing
    Set objOutlook = Nothing
End Sub

Function GetDate(dt As Date) As String
    GetDate = Year(dt) & "-" & Month(dt) & "-" & Day(dt)
End Function 

【问题讨论】:

  • 你有Set objFolder = objnSpace.Folders("Personal Folders").Folders("Inbox").Folders("report's").Folders("Customer")。我很难相信共享文件夹被命名为“个人文件夹”。第一个名称必须是共享文件夹的名称。这实际上是 Outlook 所说的 Store,它是磁盘上的文件。第二个名称必须是该商店中的文件夹;例如“收件箱”每个后续名称必须是前一个文件夹中的文件夹。试着让这个Set 声明正确。 .

标签: vba outlook


【解决方案1】:

您需要更新以下代码行

Set objFolder = objnSpace.Folders("Personal Folders").Folders("Inbox").Folders("report's").Folders("Customer")

Personal Folders 更改为电子邮件地址,如果不需要,请删除该行的其余部分.Folders("report's").Folders("Customer")

或者干脆用Set objFolder = Application.Session.PickFolder替换整行

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    • 2019-11-18
    • 1970-01-01
    相关资源
    最近更新 更多