我有在其他用户日历中创建约会的代码
当我调用NameSpace对象的GetSharedDefaultFolder时,如果该条目不存在,它将自动在Outlook中的“共享日历”下以“日历-[用户]”格式添加一个条目
如何防止这样做,就好像您已经以“ [用户]”的形式将用户包含在列表中一样,您最终会重复
谢谢
答案 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
答案尚未完成,我将尽快更新。