我正在使用 MS Access 和 Outlook 对象模型中的 VBA 以编程方式创建 Outlook 约会项目(尽管语言无关紧要)。
项目被添加到属于单个用户的多个日历,其他用户被授予读/写权限。用户没有理由使用 Outlook 在日历上创建或编辑约会。然后约会数据存储在后端表中。从本质上讲,Outlook 被用作我的“日历视图”。
但是,我遇到了重大问题,用户直接在 Outlook 中更改约会项目,而这些约会项目又不会在我的后端更新。
我想要一个可更新的“ReadOnly”属性,它可以为每个约会项目设置,并且除非设置回 False,否则不允许更改……但不认为存在。有什么建议么?
我作为解决方案尝试或拒绝的事情:
- 提醒用户注意规则。
- 查找所有不匹配项的脚本 - 这可行但不实用。
- 不允许编辑的自定义 Outlook 表单 - 不会阻止用户拖动约会。
更新:使用下面 nemmy 的建议,我已经做到了这一点。这仅适用于用户在更改任何内容之前选择约会。如果在同一次单击中选择并拖动约会,则它不起作用。
Private WithEvents objExplorer As Outlook.Explorer
Private WithEvents appt As Outlook.AppointmentItem
Public Sub Application_Startup()
Set objExplorer = Application.ActiveExplorer
End Sub
Private Sub objExplorer_SelectionChange()
If objExplorer.CurrentFolder.DefaultItemType = olAppointmentItem Then
If objExplorer.Selection.Count > 0 Then
Set appt = objExplorer.Selection(1)
End If
End If
End Sub
Private Sub appt_Write(Cancel As Boolean)
If Not appt.Mileage = "" Then 'This appointment was added by my program
MsgBox ("Do not change appointments directly in Outlook!")
Cancel = True
appt.Close (olDiscard)
End If
End Sub