簡體   English   中英

將 Outlook 約會項目設為只讀

[英]Make Outlook AppointmentItem Read-Only

我正在使用 MS Access 中的 VBA 和 Outlook 對象模型(盡管語言無關緊要)以編程方式創建 Outlook 約會項目。

項目被添加到屬於單個用戶的多個日歷,其他用戶被授予讀/寫權限。 用戶沒有理由使用 Outlook 在日歷上創建或編輯約會。 約會數據然后存儲在后端表中。 本質上,Outlook 被用作我的“日歷視圖”。

但是,我遇到了主要問題,用戶直接在 Outlook 中更改約會項目,而這些項目又不會在我的后端更新。

我想要一個可更新的“只讀”屬性,它可以為每個約會項目設置,並且除非設置回 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

你能鈎到約會項目的寫入事件嗎? 您可以防止以這種方式進行更改。 像下面這樣的東西可能會起作用(免責聲明未經測試):

Public WithEvents myItem As Outlook.AppointmentItem 

Sub Initialize_handler() 

 Set myItem = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar).Items("Your Appointment") 

End Sub 



Private Sub myItem_Write(Cancel as boolean) 

  Cancel=true 

End Sub

您遇到的問題是人們具有寫訪問權限,您是否可以或是否可以只授予他們讀訪問權限? 如果這是不可接受的,那么我的答案是您不能或不應該阻止他們更改項目。 你需要處理它。 這就是我所做的。

因此,當您創建日歷項目時,請為其提供一個唯一 ID,例如后端表行中的 ID。 將此添加到日歷項的屬性,如里程屬性。

現在只需創建一個更新方法,該方法循環遍歷您表中的所有當前日歷項目,並使用 ID 從 Outlook 中獲取它們,檢查它是否未更改以及是否已更新您的表。

或者,並在下面給出您的評論;

在我看來,您必須控制前景。 由於這樣的 nemmy 走在正確的軌道上,您可能需要使用 Outlook 插件來連接到 Outlook 對象。 然后你需要獲取用戶打開的每個約會項目,並檢查它是否有里程 ID。 如果是這樣,您要么需要告訴他們在您的數據庫中而不是在 Outlook 中更改此設置,要么您需要獲取相關的事件以指示對約會項目的更改並等待它被更改。 然后將這些更改從 Outlook 發送到您的數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM