Я пишу макрос для создания встречи после того, как контакт был создан.
Пользователь может нажать кнопку, ввести данные для контакта, и после сохранения он должен открыть новое окно встречи..
Проблема заключается в том, что помощник по вызову вызывается до сохранения контакта.Таким образом, объект / контакт не существует для передачи в подпрограмму.
Мой код:
' 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?