2016-10-24 3 views
0

Как обновить/редактировать существующие календарные встречи с помощью VBA? Почему следующий код VBA не обновляет тему?Как обновить приложение Outlook с помощью VBA?

VBA суб:

Sub failToEditAppointment() 
    Dim oSession As Variant 
    Set oSession = Application.Session 
    Dim oCalendar As Variant 
    Set oCalendar = oSession.GetDefaultFolder(olFolderCalendar) 
    Dim oItems As Variant 
    Set oItems = oCalendar.Items 

    oItems.IncludeRecurrences = False 
    oItems.Sort "[Location]" 

    Debug.Print oItems(1).Subject 
    oItems(1).Subject = "foo" 
    Debug.Print oItems(1).Subject 
    oItems(1).Save 
    Debug.Print oItems(1).Subject 
End Sub 

Выход:

День святого Валентина

День святого Валентина

День святого Валентина

ответ

1

Вы изменяете и сохранение различных объектов - каждый раз, когда вы вызовите oItems.Item(i), вы получите новый COM-объект, который не гарантирует ничего о других экземплярах этого объекта. Иногда Outlook кэширует последний использованный объект, иногда это не так. Сохраните элемент в выделенной переменной. В более общем случае многоточечная нотация (например, oItem.Item (1)) всегда плохая идея.

Dim oItem As Object 

oItems.IncludeRecurrences = False 
oItems.Sort "[Location]" 
set oItem = oItems(1) 
Debug.Print oItem.Subject 
oItem.Subject = "foo" 
Debug.Print oItem.Subject 
oItem.Save 
Debug.Print oItem.Subject 
0

Кажется, что если вы установили элемент в переменную типа AppointmentItem.

Sub failToEditAppointment() 
    Dim oSession As Variant 
    Set oSession = Application.Session 
    Dim oCalendar As Variant 
    Set oCalendar = oSession.GetDefaultFolder(olFolderCalendar) 
    Dim oItems As Variant 
    Set oItems = oCalendar.Items 

    oItems.IncludeRecurrences = False 
    oItems.Sort "[Location]" 

    Dim appointment As AppointmentItem 
    Set appointment = oItems(1) 
    Debug.Print appointment.Subject 
    appointment.Subject = "foo" 
    Debug.Print appointment.Subject 
    appointment.Save 
    Debug.Print appointment.Subject 
End Sub 

Выход:

День святого Валентина

Foo

Foo

 Смежные вопросы

  • Нет связанных вопросов^_^