2016-04-03 86 views
1

我试图将电子邮件转换为任务并将该任务放入共享任务文件夹中。我的同事与我分享了该文件夹,但也让我拥有者可以访问该文件夹。VBA - Outlook - 在共享任务列表中创建任务

我们已经使用了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

此外,任务文件夹,您将需要权限,您的同事的邮箱。 (不是收件箱或其他文件夹。)

如果将邮箱添加到您的配置文件中,请参阅接受的答案here

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