在 Outlook 宏中使用该Move
方法时AppointmentItem
,我失去了接收更新的能力,因为它正在创建项目的副本而不是真正移动它。此行为会导致项目不再与原始项目链接,因此不会保留项目更新。
我想通过 VBA 复制您获得的剪切/粘贴行为,该行为能够维护原始对象并且不会导致更新丢失。
我相信这与基于搜索的 GlobalAppointmentID 有关,但是我无法找到实际移动约会的方法。
我正在使用的代码如下。GetFolderFromPath 是一个帮助函数,它只从路径中返回一个文件夹对象,效果很好。
Sub MoveItem()
Dim targetPath As String: targetPath = "\\tnolan@microsoft.com\Calendar\OOFS"
If Application.ActiveExplorer.Selection.Count = 0 Then
MsgBox ("No item selected")
Exit Sub
Else
Dim targetFolder As Outlook.Folder
Set targetFolder = GetFolderFromPath(targetPath)
For x = 1 To Application.ActiveExplorer.Selection.Count
Dim oSelected As Variant
Set oSelected = Application.ActiveExplorer.Selection.Item(x)
If oSelected.Class = olAppointment Then
Dim NS As NameSpace: Set NS = Application.GetNamespace("MAPI")
Dim oAppt As AppointmentItem: Set oAppt = NS.GetItemFromID(oSelected.EntryID)
oAppt.Move targetFolder
Set oAppt = Nothing
Set NS = Nothing
End If
Set oSelected = Nothing
Next x
Set targetFolder = Nothing
End If
End Sub