Перейти к содержимому

Outlook: Как оставить отмененное собрание в календаре как организатор?

Author: Sun Last Modified: 2025-08-07

В Outlook, будучи организатором встречи, при её отмене она автоматически удаляется из календаря. В некоторых случаях вы можете захотеть сохранить отмененные встречи в календаре для пометок. Однако в Outlook нет встроенных функций, которые могут справиться с этой задачей. В этом руководстве представлены два кода VBA для сохранения встречи как события при её отмене.

Коды VBA для копирования отмененной встречи как события


Коды VBA для копирования отмененной встречи как события

Вот два кода для отмены встречи и одновременного копирования и вставки её как события.

Примечание: перед активацией кода убедитесь, что эти две опции включены:

Включите Outlook, нажмите Файл > Параметры, в окне параметров Outlook выберите вкладку Центр управления безопасностью, затем нажмите Настройки центра управления безопасностью. В окне Центр управления безопасностью перейдите на вкладку Настройки макросов, отметьте Включить все макросы (не рекомендуется; потенциально опасный код может быть выполнен) и Применить настройки безопасности макросов к установленным надстройкам. Нажмите ОК > ОК, чтобы закрыть окна. Перезапустите Outlook.

doc keep meeting in calendar 1
doc keep meeting in calendar 2

1. Переключитесь в представление Календарь в Outlook и выберите встречу, которую хотите отменить. Нажмите клавиши Alt + F11 , чтобы открыть окно Microsoft Visual Basic for Applications.

2. Нажмите Вставить > Модуль , чтобы добавить новый пустой модуль. Затем скопируйте и вставьте следующий код в него.

Код: Скопировать встречу как событие и отменить её

Sub CopyMeetingAsAppointmentBeforeCancel()
'UpdatebyExtendoffice20221129
Dim xAppointmentItem As AppointmentItem
Dim xMeetingItem As AppointmentItem
On Error Resume Next
Set xMeetingItem = GetCurrentItem()
Set xAppointmentItem = Application.CreateItem(olAppointmentItem)
With xAppointmentItem
  .Subject = "Canceled: " & xMeetingItem.Subject
  .Start = xMeetingItem.Start
  .Duration = xMeetingItem.Duration
  .Location = xMeetingItem.Location
  .Body = xMeetingItem.Body
  .Save
  .Move Application.ActiveExplorer.CurrentFolder
End With
With xMeetingItem
  .MeetingStatus = olMeetingCanceled
  .Send
  .Delete
End With
Set xAppointmentItem = Nothing
Set xMeetingItem = Nothing
End Sub

Function GetCurrentItem() As Object
  On Error Resume Next
  Select Case TypeName(Application.ActiveWindow)
    Case "Explorer"
      Set GetCurrentItem = Application.ActiveExplorer.Selection.Item(1)
    Case "Inspector"
      Set GetCurrentItem = Application.ActiveInspector.CurrentItem
  End Select
End Function
doc keep meeting in calendar 3

3. Нажмите кнопку Выполнить или клавишу F5 , теперь выбранная встреча отменена, и создано новое событие с названием Отменено & тема.

doc keep meeting in calendar 4

Если вы хотите скопировать и вставить встречу как событие в другой календарь, а затем отменить встречу, используйте следующий код:

Код: Скопировать встречу как событие в другом календаре и отменить её

Sub CopyMeetingAsAppointmentToCalenderBeforeCancel()
'Updatebyextendoffice20221129
Dim xDestCalendar As Outlook.MAPIFolder
Dim xNameSpace As Outlook.NameSpace
Dim xAppointmentItem As AppointmentItem
Dim xMeetingItem As AppointmentItem
On Error Resume Next
Set xNameSpace = Application.GetNamespace("MAPI")
Set xDestCalendar = xNameSpace.PickFolder
If xDestCalendar.DefaultItemType <> olAppointmentItem Then
  MsgBox "Please Select calendar folder. ", vbOKOnly + vbInformation, "Kutools for Outlook"
  Exit Sub
End If
Set xMeetingItem = GetCurrentItem()
Set xAppointmentItem = Application.CreateItem(olAppointmentItem)
With xAppointmentItem
  .Subject = "Canceled: " & xMeetingItem.Subject
  .Start = xMeetingItem.Start
  .Duration = xMeetingItem.Duration
  .Location = xMeetingItem.Location
  .Body = xMeetingItem.Body
  .Save
  .Move xDestCalendar
End With
With xMeetingItem
  .MeetingStatus = olMeetingCanceled
  .Send
  .Delete
End With
Set xDestCalendar = Nothing
Set xNameSpace = Nothing
Set xAppointmentItem = Nothing
Set xMeetingItem = Nothing
End Sub

Function GetCurrentItem() As Object
  On Error Resume Next
  Select Case TypeName(Application.ActiveWindow)
    Case "Explorer"
      Set GetCurrentItem = Application.ActiveExplorer.Selection.Item(1)
    Case "Inspector"
      Set GetCurrentItem = Application.ActiveInspector.CurrentItem
  End Select
End Function

Нажмите кнопку Выполнить или клавишу F5 , появится диалоговое окно Выбрать папку, где вы сможете выбрать папку календаря для вставки события, затем нажмите ОК.

doc keep meeting in calendar 5

Теперь встреча отменена и скопирована как событие в выбранную папку календаря.

doc keep meeting in calendar 6

Лучшие инструменты для повышения продуктивности в Office

Срочные новости: Выпущена бесплатная версия Kutools для Outlook!

Оцените совершенно новый Kutools для Outlook с более чем100 потрясающими функциями! Нажмите, чтобы скачать сейчас!

🤖 Kutools AI : Использует передовые технологии искусственного интеллекта для легкой работы с Email – отвечает, резюмирует, оптимизирует, расширяет, переводит и создает Email.

📧 Автоматизация Email: Автоответчик (доступно для POP и IMAP) / Запланировать отправку Email / Авто Копия/Скрытая копия по правилу при отправке письма / Автоматическое перенаправление (Расширенное правило) / Автоматически добавить приветствие / Автоматическое разделение Email с несколькими получателями на отдельные сообщения ...

📨 Управление Email: Отозвать письмо / Блокировать мошеннические Email по теме и другим признакам / Удалить дубликаты писем / Расширенный Поиск / Организовать папки ...

📁 Вложения Pro: Пакетное сохранение / Пакетное открепление / Пакетное сжатие / Автосохранение / Автоматическое отсоединение / Автоматическое сжатие ...

🌟 Магия интерфейса: 😊Больше красивых и современных Эмодзи / Напоминания о важных письмах / Сворачивание Outlook вместо закрытия ...

👍 Мгновенные действия в один клик: Ответить всем с вложениями / Антифишинг Email / 🕘Показать часовой пояс отправителя ...

👩🏼‍🤝‍👩🏻 Контакты и Календарь: Пакетное добавление контактов из выбранных Email / Разделить группу контактов на отдельные группы / Удалить напоминание о дне рождения ...

Используйте Kutools на вашем любимом языке – поддерживается английский, испанский, немецкий, французский, китайский и более40 других языков!

Мгновенно разблокируйте Kutools для Outlook одним кликом. Не ждите, скачайте сейчас и повысьте свою эффективность!

kutools for outlook features1 kutools for outlook features2