VBA - Outlook - 在共享任务列表中创建任务

时间:2016-04-03 15:46:35

标签: vba outlook outlook-vba

我尝试将电子邮件转换为任务并将该任务放在共享任务文件夹中。我的同事和我分享了这个文件夹,但也让我的所有者可以访问该文件夹。

我们已经使用slipstick上的脚本来完成此任务。这段代码对我的同事有用,但对我不起作用。

当我深入查看可用文件夹列表时,我只能将我的个人任务列表视为文件夹,而不是共享文件夹。 (通过以下代码)

有没有办法可以将任务添加到共享任务文件夹?

    Public strFolders As String

    Public Sub GetFolderNames()
        Dim olApp As Outlook.Application
        Dim olSession As Outlook.NameSpace
        Dim olStartFolder As Outlook.MAPIFolder
        Dim lCountOfFound As Long

        lCountOfFound = 0

        Set olApp = New Outlook.Application
        Set olSession = olApp.GetNamespace("MAPI")

         ' Allow the user to pick the folder in which to start the search.
        Set olStartFolder = olSession.PickFolder

         ' Check to make sure user didn't cancel PickFolder dialog.
        If Not (olStartFolder Is Nothing) Then
             ' Start the search process.
            ProcessFolder olStartFolder
        End If

    ' Create a new mail message with the folder list inserted
    Set ListFolders = Application.CreateItem(olMailItem)
      ListFolders.Body = strFolders
      ListFolders.Display

    ' clear the string so you can run it on another folder
      strFolders = ""
    End Sub

    Sub ProcessFolder(CurrentFolder As Outlook.MAPIFolder)

        Dim i As Long
        Dim olNewFolder As Outlook.MAPIFolder
        Dim olTempFolder As Outlook.MAPIFolder
        Dim olTempFolderPath As String
         ' Loop through the items in the current folder.
        For i = CurrentFolder.Folders.Count To 1 Step -1

            Set olTempFolder = CurrentFolder.Folders(i)

            olTempFolderPath = olTempFolder.FolderPath

         ' Get the count of items in the folder
             olCount = olTempFolder.Items.Count

         'prints the folder path and name in the VB Editor's Immediate window
             Debug.Print olTempFolderPath & " " & olCount

            ' prints the folder name only
             ' Debug.Print olTempFolder

             ' create a string with the folder names.
             ' use olTempFolder if you want foldernames only
             strFolders = strFolders & vbCrLf & olTempFolderPath & " " & olCount

            lCountOfFound = lCountOfFound + 1

        Next
         ' Loop through and search each subfolder of the current folder.
        For Each olNewFolder In CurrentFolder.Folders

             'Don't need to process the Deleted Items folder
            If olNewFolder.Name <> "Deleted Items" Then
                ProcessFolder olNewFolder
            End If

        Next

    End Sub

1 个答案:

答案 0 :(得分:1)

除了Task文件夹之外,您还需要获得同事邮箱的许可。 (不是收件箱或其他文件夹。)

如果您将邮箱添加到个人资料中,请参阅已接受的答案here

如果您不将邮箱添加到个人资料中,请参阅描述GetSharedDefaultFolder的答案。不需要赎回。