3

如何自动化该过程以在“邮件收藏夹”文件夹中显示我的公用文件夹日历?

我想通过登录脚本或组策略来做到这一点。

我将 Microsoft Exchange server 2007 与 Windows Server 2008 R2 和运行 Windows Server 2003 R2 的域控制器一起使用。

所有工作站系统都有 Outlook 2010 或 Outlook 2007。

在对此进行搜索时,我找到了下面的脚本,但是通过此脚本(已经修改了路径),我只能使公用文件夹日历显示在公用文件夹收藏夹中,但不在邮件收藏夹中。

Const olPublicFoldersAllPublicFolders = 18
Dim olkApp, olkSes, olkFolder
Set olkApp = CreateObject("Outlook.Application")
Set olkSes = olkApp.GetNameSpace("MAPI")
'Change the profile name on the next line'
olkSes.Logon "Outlook"
'Change the folder name on the next line.  Repeat the next two lines for each folder         
 you want to add.'
Set olkFolder =     
olkSes.GetDefaultFolder(olPublicFoldersAllPublicFolders).Folders("Public   
calender").Folders("p cal")
olkFolder.AddToPFFavorites
'Change the folder name on the next line.  Repeat the next two lines for each folder     
you want to add.'
Set olkFolder = OpenOutlookFolder("Public Folders\Favorites\P cal")
AddFavoriteFolder olkFolder
olkSes.Logoff
Set olkApp = Nothing
Set olkSes = Nothing
Set olkFolder = Nothing
WScript.Quit

Sub AddFavoriteFolder(olkFolder)
' Purpose: Add a folder to Favorite Folders.'
' Written: 5/2/2009'
' Author:  BlueDevilFan'
' Outlook: 2007'
Const olModuleMail = 0
Const olFavoriteFoldersGroup = 4
    Dim olkPane, olkModule, olkGroup
Set olkPane = olkApp.ActiveExplorer.NavigationPane
Set olkModule = olkPane.Modules.GetNavigationModule(olModuleMail)
Set olkGroup =     
olkModule.NavigationGroups.GetDefaultNavigationGroup(olFavoriteFoldersGroup)
olkGroup.NavigationFolders.Add olkFolder
Set olkPane = Nothing
Set olkModule = Nothing
Set olkGroup = Nothing
End Sub

Function OpenOutlookFolder(strFolderPath)
' Purpose: Opens an Outlook folder from a folder path.'
' Written: 4/24/2009'
' Author:  BlueDevilFan'
' Outlook: All versions'
Dim arrFolders, varFolder, bolBeyondRoot
On Error Resume Next
If strFolderPath = "" Then
    Set OpenOutlookFolder = Nothing
Else
    Do While Left(strFolderPath, 1) = "\"
        strFolderPath = Right(strFolderPath, Len(strFolderPath) - 1)
    Loop
    arrFolders = Split(strFolderPath, "\")
    For Each varFolder In arrFolders
        Select Case bolBeyondRoot
            Case False
                Set OpenOutlookFolder = olkSes.Folders(varFolder)
                bolBeyondRoot = True
            Case True
                Set OpenOutlookFolder = OpenOutlookFolder.Folders(varFolder)
        End Select
        If Err.Number <> 0 Then
            Set OpenOutlookFolder = Nothing
            Exit For
        End If
    Next
End If
On Error GoTo 0
End Function
4

1 回答 1

1

你不能这样做。您只能将邮件文件夹或搜索文件夹添加到“邮件收藏夹”视图。引用 Outlook 的帮助,收藏夹包含“文件夹的快捷方式,例如收件箱、已发送邮件和搜索文件夹。您可以添加、删除和排列文件夹 [...] 更轻松地访问您的邮件文件夹”(我的重点)。

从 MSFT 的角度来看,这在逻辑上是一致的。

  • 将公用对象添加到您的公用文件夹收藏夹是用户不经常执行的活动类型。所以在登录脚本中处理它是不合适的。这就像将资源添加到您的个人信息库中,例如包含项目状态或手册的文件夹。
  • 将邮件文件夹添加到您的邮件收藏夹对于经常使用的项目来说是一种快速而肮脏的技巧。这更像是添加书签。

您可能会争辩说,如果您必须设置大量都需要访问公用文件夹的用户,那么在登录脚本中处理它是有意义的,这很好,但同样,它会将它添加到公共文件夹收藏夹,而不是邮件收藏夹……如果收藏夹已经存在,您必须有代码才能不创建收藏夹。

于 2012-09-07T19:43:59.027 回答