Я пытаюсь настроить Outlook 2016 для открытия 2 окон при запуске, одно с почтовым ящиком, другое с выбранным календарем - PullRequest
0 голосов
/ 09 апреля 2019

один из моих клиентов запросил это: При открытии Outlook 2016 они хотят, чтобы при запуске открывалось 2 окна: одно с почтой, другое с выбранными календарями. Календари являются общими. Я нашел код, который открывает 2 окна по мере необходимости, но я просто не знаю, как настроить окна с календарем для выбора определенных календарей.

Я пытался исследовать интернет, ничего не мог найти

Private Sub Application_Startup()
Dim xCalendar As Folder
Dim xInbox As Folder
Dim xExplorer As Outlook.Explorer
Dim xWidth, xHeight As Integer
On Error Resume Next
xWidth = Int(GetSystemMetrics32(0) / 4) + 60
xHeight = GetSystemMetrics32(1)
Set xInbox = Outlook.Application.ActiveExplorer.CurrentFolder
xInbox.Display
Set Application.ActiveExplorer.CurrentFolder = xInbox
Set xExplorer = Application.ActiveExplorer
With xExplorer
.WindowState = olNormalWindow
.Top = 0
.Left = 0
.Height = xHeight
.Width = xWidth
End With
Set xCalendar = Outlook.Session.GetDefaultFolder(olFolderCalendar)
xCalendar.Display
 Set xExplorer = Application.ActiveExplorer
 With xExplorer
.WindowState = olNormalWindow
.Top = 0
.Left = xWidth
.Height = xHeight
.Width = xWidth
End With
Set xExplorer = Application.ActiveExplorer
With xExplorer
.WindowState = olNormalWindow
.Top = 0
.Left = xWidth * 2
.Height = xHeight
.Width = xWidth
End With
Set xExplorer = Application.ActiveExplorer
With xExplorer
.WindowState = olNormalWindow
.Top = 0
.Left = xWidth * 3
.Height = xHeight
.Width = xWidth
End With
End Sub

Я ожидаю, что это: нажмите, чтобы открыть внешний вид, 2 открытых окна, одно обычное письмо и одно с открытыми календарями и выбранным специальным календарем

1 Ответ

0 голосов
/ 09 апреля 2019

Это то, что вы ищете. Чтобы использовать произвольное имя группы, просто установите соответствующую строку:

Set objGroup = .Item("group name")

Вот полный код:

Dim WithEvents objPane As NavigationPane

'This goes on ThisOutlookSession
Private Sub Application_Startup()
    Set objPane = Application.ActiveExplorer.NavigationPane

End Sub

Private Sub objPane_ModuleSwitch(ByVal CurrentModule As NavigationModule)

    Dim objPane As NavigationPane
    Dim objModule As CalendarModule
    Dim objGroup As NavigationGroup
    Dim objNavFolder As NavigationFolder
    Dim objCalendar As Folder
    Dim objFolder As Folder

    Dim i As Integer

    If CurrentModule.NavigationModuleType = olModuleCalendar Then
    Set Application.ActiveExplorer.CurrentFolder = Session.GetDefaultFolder(olFolderCalendar)
    DoEvents

    Set objCalendar = Session.GetDefaultFolder(olFolderCalendar)
    Set objPane = Application.ActiveExplorer.NavigationPane
    Set objModule = objPane.Modules.GetNavigationModule(olModuleCalendar)

    With objModule.NavigationGroups
        Set objGroup = .GetDefaultNavigationGroup(olMyFoldersGroup)

    ' To use a different group
        Set objGroup = .Item("group name")
    End With

    For i = 1 To objGroup.NavigationFolders.Count
        Set objNavFolder = objGroup.NavigationFolders.Item(i)
        Select Case i

        ' Enter the calendar index numbers you want to open
            Case 1, 3, 4
                objNavFolder.IsSelected = True

        ' Set to True to open side by side
                objNavFolder.IsSideBySide = False
            Case Else
                objNavFolder.IsSelected = False
        End Select
    Next

' set the view here

    End If

    Set objPane = Nothing
    Set objModule = Nothing
    Set objGroup = Nothing
    Set objNavFolder = Nothing
    Set objCalendar = Nothing
    Set objFolder = Nothing

End Sub
...