Создать встречу после того, как контакт был сохранен - PullRequest
0 голосов
/ 13 марта 2019

Я пишу макрос для создания встречи после того, как контакт был создан.

Пользователь может нажать кнопку, ввести данные для контакта, и после сохранения он должен открыть новое окно встречи..

Проблема заключается в том, что помощник по вызову вызывается до сохранения контакта.Таким образом, объект / контакт не существует для передачи в подпрограмму.

Мой код:

' Application-level variables 
Public objOL As Outlook.Application 
Public objNS As Outlook.NameSpace

' Public Folders 
Public objPublicFolderRoot As Outlook.Folder 
Public objCompanyFolder As Outlook.Folder 
Public objContactFolder As Outlook.Folder 
Public objCalFolder As Outlook.Folder

' Set the Public Folders 
Set objPublicFolderRoot = objNS.GetDefaultFolder(olPublicFoldersAllPublicFolders) Set objCompanyFolder = objPublicFolderRoot.Folders("Company_Shared") Set objContactFolder = objCompanyFolder.Folders("Contacts") Set objCalFolder = objCompanyFolder.Folders("Calendars")

Sub CreateEmptyContact()
    Dim objContact As Outlook.ContactItem
    Set objNS = Application.GetNamespace("MAPI")

    ' Build out the contact item
    Set objContact = objContactFolder.Items.Add(olContactItem)

    With objContact
        .Display
    End With

    CreateAppointment(objContact)

    ' Reset vars
    Set objContact = Nothing
    Set objPublicFolderRoot = Nothing
    Set objCompanyFolder = Nothing
    Set objContactFolder = Nothing

End Sub

Public Sub CreateAppointment(objContact As Outlook.ContactItem)   
' Create the appointment on the public folder calendar with the passed contact Public Sub CreateAppointment(objContact As Outlook.ContactItem)
    Dim objCalAppt As Outlook.AppointmentItem
    Set objCalAppt = Application.CreateItem(olAppointmentItem)  

    ' Add to the Appointment to the existing Calendar items
    Set objCalAppt = objCalFolder.Items.Add(olAppointmentItem)
    With objCalAppt
        .MeetingStatus = olNonMeeting 'Not an invitation
        .Start = Now
        .Duration = 120
        .Save
        .Display
    End With

    ' Reset vars
    Set objCalAppt = Nothing   
End Sub

Какой мой лучший метод продвижения вперед.Например, я должен использовать что-то вроде WithEvents в Contact_Send или Contact_AfterWrite?

1 Ответ

1 голос
/ 14 марта 2019

Вы можете либо показать контакт модально (.Display(true)), либо вы можете наблюдать событие Items.ItemAdd в папке «Контакты», которое нужно запустить (после того, как контакт сохранен), и использовать элемент, переданный вашему обработчику событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...