使用物件模型時 Outlook 2010 中的已知問題

原始 KB 編號:   2265515

摘要

本文說明當您使用 Microsoft Outlook 2010 物件模型時可能發生的已知問題。

無法 Outlook.Application 從更高的處理常式建立物件

在 Windows Vista、Windows 7 或任何其他允許以提升許可權執行進程的作業系統中,您無法使用以提升許可權執行的程式,來自動化 Outlook。 這是 COM 的基礎限制。 Outlook 和自訂程式(自動化 Outlook)都必須在相同的完整性層級上執行。

不會發生 BeforeItemMove 和 BeforeFolderMove 事件

在許多情況下 BeforeItemMove ,和 BeforeFolderMove 事件不會發生。 已知的案例包括從 To-Do 列刪除約會、從行事曆中刪除會議、To-Do 列、在非預設的資料夾中執行事件,以及使用 [忽略交談] 命令刪除專案。 這些問題已在 Outlook 2010 的十二月2010累積更新中修正。

線上模式中的 GetProperty 方法失敗

如果您在線上模式下使用 Microsoft Exchange 2010,並使用 GetProperty 方法從未儲存的專案中檢索屬性,則此方法可能會失敗。 這是因為 Exchange 2010 處理命名屬性的方式變更。 Outlook 2007 也會受到影響。 目前的變通辦法包括:

  • 在快取模式中使用 Outlook。
  • 在您呼叫方法之前,請先確定專案已儲存的狀態 GetProperty

檢查視窗可能無法正確關閉

如果您 GetVisibleCallback 在 Microsoft Visual Studio Tools For Microsoft Office (VSTO) 中執行該功能,使用者可能無法正確關閉 inspector 視窗。 這項問題已在2011年2月的 Outlook 2010 累計更新中修正。

BeforeCheckNames 事件會在不同的時間發生,而不是出現在 Outlook 2007 中。

在 Outlook 2010 中,BeforeCheckNames 事件會在解析收件者之後,而不是解析之前進行。 這表示取消事件沒有任何作用。 這項問題已在 Outlook 2010 年 2 2011 月累積更新中修正。

Views 物件模型可能不會對應至使用者介面中的實際視圖

在某些情況下,如果您以程式設計方式變更視圖或取得 view 設定,則物件模型中的設定可能不會對應至 Outlook 在使用者介面中顯示的實際視圖設定。 已在 Outlook 2010 年 2 2011 月累積更新中進行改進,以解決此問題。

當您使用 [插入專案] 視窗時,附件無法正確維護

如果您使用 Outlook 物件模型來新增及移除附件,當使用者使用 [插入專案] 命令插入專案附件時,可能會有額外的附件。 這是因為 bug 的原因在於,對話方塊會將所有附件視為置疑,即使它們不是置疑。 因此,會一起儲存額外的附件與郵件。 這項問題已在2010年2月的 Outlook 2010 累計更新中修正。

無法使用 POP/IMAP 帳戶插入專案附件

如果您使用 Attachments.Add POP/IMAP 帳戶新增 Outlook 專案附件的方法,則呼叫會失敗。 這項問題已在 Outlook 2010 的十二月2010累積更新中修正。

MailItem.Recipients.ResolveAll 函數會從 [收件者] 欄位移除收件者

如果使用者將未解析的收件者新增至撰寫模式中的郵件,然後 Recipients.ResolveAll 為該專案呼叫此方法,則會移除收件者。 沒有任何計畫可以變更此行為。

GetAssociatedAppointment [寄件備份] 資料夾中,會議邀請的方法失敗

如果您嘗試在「寄件」資料夾中從會議邀請中取得約會,該呼叫會失敗。 這項問題已在2011年2月的 Outlook 2010 累計更新中修正。

開啟檢查視窗時可能無法更新約會資料

由於 Outlook 2010 處理及快取約會的方式發生內部變更,因此如果在 inspector 視窗中開啟對應的約會,物件模型可能不會提供約會例外狀況的最新資訊。 即使您取消參考並重新從 store 中取回專案,也會發生此行為。 若要解決此問題,請確定 [約會] 視窗已關閉。 沒有任何計畫可以變更此行為。

如果您嘗試從物件取得 Folder 物件 NavigationFolder ,您可能會收到「作業失敗」錯誤訊息。 使用 Outlook 2010 中新的共用行事曆資料夾功能時,會發生此問題。 NavigationFolder.Folder在 Outlook 已經過初始化之前,先對物件進行檢索,便會發生此問題。 此初始化不會依預設進行。 若要解決此問題,請先參照預設的 [行事曆] 資料夾,然後呼叫此 GetExplorer 方法。 這會間接導致 Outlook 初始化共用的行事曆。 下列 Outlook VBA 程式碼範例說明此問題及變通方法:

Sub GetCalendars()
  ' Work around
  Set oCalFolder = Session.GetDefaultFolder(olFolderCalendar)
  Set oCalExp = oCalFolder.GetExplorer

  Dim oModules As Outlook.CalendarModule
  Dim oMyCalendarGroup As Outlook.NavigationGroup
  Dim oPeopleNavGroup As Outlook.NavigationGroup
  Set oModules = ActiveExplorer.NavigationPane.Modules.GetNavigationModule(OlNavigationModuleType.olModuleCalendar)
  Set oMyCalendarGroup = oModules.NavigationGroups.GetDefaultNavigationGroup(OlGroupType.olMyFoldersGroup)
  Set oPeopleNavGroup = oModules.NavigationGroups.GetDefaultNavigationGroup(OlGroupType.olPeopleFoldersGroup)
  GetNavFolders oMyCalendarGroup
  GetNavFolders oPeopleNavGroup
End Sub

Private Sub GetNavFolders(ByVal obj As Outlook.NavigationGroup)
  Set oNavFolders = obj.NavigationFolders
  Dim oNavFolder As Outlook.NavigationFolder
  For Each oNavFolder In oNavFolders
    Debug.Print oNavFolder.DisplayName & "==>" & oNavFolder.Folder ' <-- this errors
  Next
End Sub