【发布时间】:2022-01-10 14:42:19
【问题描述】:
我在 Windows 10 上使用 Outlook 365。 “我的日历”组中有三个日历。 我想在启动时显示所有日历,默认日历日历 1 使用 VBA 处于活动状态。 为此,我使用了下面的 VBA 代码,但是有两个问题。
一个问题是部分代码是多余的,这使得它很耗时。 默认情况下,启动后只有我的日历组中的 Calendar1 可见。 为了显示所有日历,代码使 Calendar2 和 Calendar3 可见。 运行这些命令后,Calendar3 处于活动状态。 启动后激活Calendar1,代码使Calendar1不可见,然后可见。
我认为,与其这样,使用对应于在导航窗格中选中“我的日历”复选框的命令是一种有效的方法。 但我不知道该怎么做。
另外一个问题是,使用这个宏启动后,我无法通过快捷键Cntl+Alt+1和Cntl+Alt+2切换日视图和月视图。 我认为检查“我的日历”的方法可以解决这个问题 因为我手动勾选复选框时可以通过快捷键切换这些视图。
那么你能告诉我解决这些问题的方法吗? 提前谢谢你。
Private WithEvents g_Items As Outlook.Items
Private Sub Application_Startup()
Dim Ns As Outlook.NameSpace
Set Ns = Application.GetNamespace("MAPI")
Set g_Items = Ns.GetDefaultFolder(olFolderCalendar).Items
setupInitialDisplayCalendars
End Sub
Public Sub setupInitialDisplayCalendars()
Dim navModCal As CalendarModule
Dim navGroup As NavigationGroup
Set navModCal = ActiveExplorer.NavigationPane.Modules.GetNavigationModule(olModuleCalendar)
Set navGroup = navModCal.NavigationGroups.Item("My Calendars")
If Not (navGroup Is Nothing) Then
navGroup.NavigationFolders.Item("Calendar2").IsSelected = True
navGroup.NavigationFolders.Item("Calendar3").IsSelected = True
navGroup.NavigationFolders.Item("Calendar1").IsSelected = False
navGroup.NavigationFolders.Item("Calendar1").IsSelected = True
End If
End Sub
【问题讨论】: