Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 将约会添加到outlook默认约会文件夹以及共享文件夹_Vba_Outlook_Outlook 2010 - Fatal编程技术网

Vba 将约会添加到outlook默认约会文件夹以及共享文件夹

Vba 将约会添加到outlook默认约会文件夹以及共享文件夹,vba,outlook,outlook-2010,Vba,Outlook,Outlook 2010,我想使用VBA将约会添加到用户outlook日历中,它既显示在执行宏的outlook应用程序日历上,也存在于exchange服务器上的用户共享文件夹中(以便显示在用户的智能手机日历等上) 目前,我可以实现以下任一目标: Set myOlApp = Application Set myNamespace = myOlApp.GetNamespace("MAPI") Set myFolder = myNamespace.GetDefaultFolder(olFolderCalendar) Set e

我想使用VBA将约会添加到用户outlook日历中,它既显示在执行宏的outlook应用程序日历上,也存在于exchange服务器上的用户共享文件夹中(以便显示在用户的智能手机日历等上)

目前,我可以实现以下任一目标:

Set myOlApp = Application
Set myNamespace = myOlApp.GetNamespace("MAPI")
Set myFolder = myNamespace.GetDefaultFolder(olFolderCalendar)
Set exchFolder = myNamespace.GetSharedDefaultFolder(myOlApp.Session.CurrentUser, olFolderCalendar)
...

Set myAppointment = myOlApp.CreateItem(olAppointmentItem) 'shows in the executing application calendar
'OR
Set myAppointment = exchFolder.items.add(olAppointmentItem) 'shows in the smartphone calendar
'then set whatever details we want for the appointment
With myAppointment
    .ReminderSet = False
    .AllDayEvent = False
    .Sensitivity = olNormal
    .Subject = "on call"
    .Start = onCall(i).Begin
    .Duration = onCall(i).Duration
    .Save
End With
当然,宏可以在默认日历文件夹和exchange server文件夹中循环并创建新约会。但是,如果每个约会都分配了自己的唯一ID,那么这将是一个真正的攻击(也就是说,我们最终有两个约会代表相同的事件,但每个约会都有不同的唯一ID)


是否有方法将相同的约会实例添加到defaultFolder和sharedDefaultFolder的folders集合中?如果没有,是否有好办法确保约会的两个版本都是完全相同的克隆版本,具有相同的唯一标识符等?

outlook中的约会项有一个我不知道的CopyTo方法,因此在保存后,调用此方法并复制到exchange文件夹似乎解决了我的问题

Set myAppointment = myOlApp.CreateItem(olAppointmentItem)
With myAppointment
    'all the properties we wish to assign here
    .Save
    .CopyTo exchFolder, olCreateAppointment
End With
这个答案最初有olCopyAsAccept选项,但我发现这将为宏创建的每个约会创建一个已发送邮件项目