Вопрос или проблема
Я создал два представления, одно показывающее дела на весь день и одно не показывающее их. Я хочу, чтобы при переключении на дневное представление отображались дела на весь день, но при переключении на рабочую неделю или месяц, чтобы показывалось представление, не показывающее этих дел на весь день. Как это сделать?
Или есть способ уменьшить размер части дней, показывающей дела на весь день?
Я что-то упускаю? Нет смысла в том, что я могу определить разные представления, но не могу установить стандартное представление для каждого из расположений отдельно.
К сожалению, День/Неделя/Месяц — это лишь расположения одного представления, а не отдельные представления. Таким образом, вы можете отфильтровать дела на весь день, используя расширенный фильтр (Дело на весь день не равно Да), но это будет применяться ко всем расположениям.
В качестве альтернативы, вы можете создать представления “День/Неделя/Месяц”, одно из которых будет фильтровать дела на весь день, а другое — нет.
Способ с VBA. Вам нужно будет создать отдельное представление для каждого из расположений (в примере ниже это представления с именами “Дни”, “Недели” и “Месяцы”):
Public WithEvents OutlookExplorer As Outlook.Explorer
Private Sub Application_Startup()
Set OutlookExplorer = ActiveExplorer
End Sub
Private Sub OutlookExplorer_ViewSwitch()
Set View = OutlookExplorer.CurrentView
If View.ViewType = 2 Then
If View.Name = "Days" And View.CalendarViewMode <> 0 Then
View.CalendarViewMode = 0
View.Save
ElseIf View.Name = "Weeks" And View.CalendarViewMode <> 1 Then
View.CalendarViewMode = 1
View.Save
ElseIf View.Name = "Months" And View.CalendarViewMode <> 2 Then
View.CalendarViewMode = 2
View.Save
End If
End If
End Sub
Теперь при переключении на одно из пользовательских представлений (“Дни”, “Недели” или “Месяцы”) автоматически будет применено правильное расположение. Дополнительно, вы можете поместить кнопку “Изменить представление” прямо на вкладке “Главная” в ленте вашего календаря.
Ответ или решение
Для пользователей Microsoft Outlook 2013, часто возникает необходимость адаптировать отображение календаря в зависимости от конкретных нужд рабочего процесса. Например, существует задача показать все однодневные встречи в дневном представлении, но скрыть их в режиме рабочей недели. Как это осуществить? Давайте разберемся в деталях, как можно достичь этой цели, интегрируя знания о доступных функциях Outlook 2013 и использовав VBA для настройки представлений.
Теория
Microsoft Outlook 2013 предоставляет гибкие возможности по настройке отображения календаря через использование различных представлений и фильтров. Однако, стандартные режимы "День", "Рабочая неделя" и "Месяц" являются всего лишь различными компоновками одного и того же базового представления. Это означает, что все изменения, сделанные в фильтрах или настройках одного из этих режимов, автоматически применяются ко всем другим.
Фильтрация в Outlook позволяет пользователям устранять определенные элементы из просмотра. Например, вы можете использовать усовершенствованный фильтр (Advanced Filter), чтобы скрыть события на весь день, настроив условие: "All Day Event" ≠ "Yes".
Пример
В контексте вашей ситуации, создание двух различных представлений — одно для отображения всех однодневных событий и другое для их сокрытия — может быть решением, реализуемым через программирование на VBA. Давайте создадим макрос, который изменяет представление в зависимости от выбранной компоновки.
Public WithEvents OutlookExplorer As Outlook.Explorer
Private Sub Application_Startup()
Set OutlookExplorer = ActiveExplorer
End Sub
Private Sub OutlookExplorer_ViewSwitch()
Set View = OutlookExplorer.CurrentView
If View.ViewType = 2 Then
If View.Name = "Days" And View.CalendarViewMode <> 0 Then
View.CalendarViewMode = 0
View.Save
ElseIf View.Name = "Weeks" And View.CalendarViewMode <> 1 Then
View.CalendarViewMode = 1
View.Save
ElseIf View.Name = "Months" And View.CalendarViewMode <> 2 Then
View.CalendarViewMode = 2
View.Save
End If
End If
End Sub
Данный код предусматривает создание трех различных представлений: "Days", "Weeks" и "Months". Каждое из них автоматически изменяет календарную компоновку, как только пользователь переключается на него. Это позволяет сохранить нужные фильтры в каждом из представлений и применить их незамедлительно после переключения.
Применение
-
Создание отдельных представлений: Сначала создайте три представления — "Days", где все однодневные события видны, и "Weeks"/"Months", где эти события скрыты. Это можно сделать через меню "Change View", выбрав "Manage Views" и затем установив фильтры для каждого из созданных представлений.
-
Программирование в VBA: Откройте "Visual Basic for Applications" (Alt + F11) и вставьте предоставленный код. Он автоматически подстраивает компоновку календаря в зависимости от активного представления.
-
Настройка интерфейса: Для удобства использования вы можете разместить кнопку "Change View" непосредственно на вкладке "Главная" календаря, чтобы быстро переключаться между созданными представлениями.
-
Тестирование: Переключайтесь между компоновками и убедитесь, что фильтры применяются корректно. Макрос автоматически будет изменять режимы без необходимости ручной перенастройки.
Заключение
Использование макросов VBA в Outlook 2013 позволяет настроить сложные логики отображения данных, которые невозможно достичь стандартными методами. Решение вашей задачи наглядно демонстрирует, как при помощи специализированного программирования можно оптимизировать рабочий процесс, адаптируя инструменты под специфические потребности. Убедитесь, что все изменения применяются в безопасной среде, и всегда поддерживайте актуальные резервные копии, чтобы избежать потери важной информации.