GetSharedDefaultFolder自动添加共享日历

时间:2019-10-17 09:41:56

标签: outlook calendar

我有在其他用户日历中创建约会的代码

当我调用NameSpace对象的GetSharedDefaultFolder时,如果该条目不存在,它将自动在Outlook中的“共享日历”下以“日历-[用户]”格式添加一个条目

如何防止这样做,就好像您已经以“ [用户]”的形式将用户包含在列表中一样,您最终会重复

谢谢

1 个答案:

答案 0 :(得分:0)

Eugene写了there,无法阻止GetSharedFolder创建新文件夹。

但是您可以做的是遍历所有文件夹以删除创建的文件夹。

正如您所说,这些日历使用的格式为:“日历-[用户]”。因此,您可以做的(实际上就是我所做的)是遍历所有NavigationItems并比较找到的.DisplayName与“日历-[用户]”格式。 然后,您可以使用.NavigationFolders.Remove(foundItem)从视图中删除日历。

这是我的例子:

    Dim navPane As Outlook.NavigationPane
    Dim navModule as Oulook.Module
    Dim navGroups As Outlook.NavigationGroups
    Dim naviGroup As Outlook.NavigationGroup
    Dim navigation_item As Outlook.NavigationItem


    navPane = Application.ActiveExplorer.NavigationPane
    navModule = navPane.Modules.GetNavigationModule(Outlook.OlNavigationModuleType.olModuleCalendar)
    navGroups = navModule.NavigationGroups
        i = 0
        j = 0
        l = 0
        For i = 1 To navGroups.count
            navigation_group = navGroups.Item(i)
            For j = 1 To navigation_group.NavigationFolders.count
                navigation_item = navigation_group.NavigationFolders.Item(j)
                If (Application.Session.CompareEntryIDs(navigation_item.Folder.EntryID, shared_fold.EntryID) = True) Then
                    navigation_folder_name = navigation_item.DisplayName
                    For l = 1 To navigation_group.NavigationFolders.count
                        navigation_item = navigation_group.NavigationFolders.Item(l)
                        If navigation_item.DisplayName = "Calendar - " & navigation_folder_name Then
                            'faire ici
                            navigation_group.NavigationFolders.Remove(navigation_item)
                        End If
                    Next
                End If
            Next
        Next


答案尚未完成,我将尽快更新。