2.2 商店
Outlook 將電子郵件,日曆項,備註,任務等儲存在稱為 Stores 的檔案中。如果你看一下你的資料夾窗格,你會看到類似的東西:
Aaaaaaaaaa
Inbox
Drafts
Deleted Items
: :
Bbbbbbbbbb
Inbox
Drafts
Deleted Items
: :
Cccccccccc
: :
Aaaaaaaaa
,Bbbbbbbbbb
和 Cccccccccc
是商店的使用者名稱或顯示名。我一直接受這些名稱的 Outlook 預設值,這些名稱多年來一直在變化。一旦預設值是我的名字,它就是我的電子郵件地址。這些商店的檔名可能相同,但有一個副檔名,如 PST 或 OST,或者可能是完全不同的東西。VBA 巨集需要使用者名稱來訪問商店,而不關心檔名或副檔名。
你可以擁有任意數量的商店。我有安裝 Outlook 時為我建立的“Outlook 資料檔案”。當我為我的電子郵件地址新增帳戶時,Outlook 建立了以電子郵件地址命名的新商店,例如“JohnDoe@hotmail.com”和“DoeJohn@gmail.com”。為了減少主商店的大小,我在名為 Archive 2015
的商店中儲存舊電子郵件。
如果你是業務使用者,則可以訪問共享儲存或同事儲存。
下面的巨集顯示了列出你可以訪問的商店的三種不同方式。我建議你建立一個新模組來儲存下面的程式碼並用於 F4 訪問模組的屬性,這樣你就可以將其命名為 ModIntro
或你選擇的其他名稱。如果你完成了本系列的第 1 部分,那麼你已經擁有了這樣一個模組。
將這些巨集複製到模組並測試每個巨集給出相同的輸出。
Sub ListStores1()
Dim InxStoreCrnt As Integer
Dim NS As NameSpace
Dim StoresColl As Folders
Set NS = CreateObject("Outlook.Application").GetNamespace("MAPI")
Set StoresColl = NS.Folders
For InxStoreCrnt = 1 To StoresColl.Count
Debug.Print StoresColl(InxStoreCrnt).Name
Next
End Sub
Sub ListStores2()
Dim StoresColl As Stores
Dim StoreCrnt As Store
Set StoresColl = Session.Stores
For Each StoreCrnt In StoresColl
Debug.Print StoreCrnt.DisplayName
Next
End Sub
Sub ListStores3()
Dim InxStoreCrnt As Long
With Application.Session
For InxStoreCrnt = 1 To .Folders.Count
Debug.Print .Folders(InxStoreCrnt).Name
Next
End With
End Sub
你會發現 VBA 通常有幾種方法可以達到同樣的效果。上面我展示了三種訪問商店的方法。你不需要記住它們 - 選擇你自己喜歡的 - 但你需要知道有幾種方法,因為其他人,你可能需要學習的程式碼,會有不同的收藏。
巨集 ListStores1()
和 ListStores2()
中的變數 StoresColl
都是集合,但是包含不同型別的物件:Store
和 Folder
。Store
物件只能引用光碟上的檔案。Folder
可以引用光碟上的檔案,但也可以引用商店中的資料夾,例如收件箱和已傳送郵件。Stores
,Folders
,Store
和 Folder
都是 Outlook 物件模型的一部分。本教程系列向你介紹了該模型,但它不是一個正式的定義。如果你需要正式定義,請在你最喜歡的搜尋引擎中輸入 outlook vba object model
。確保檢視模型的 VBA 版本。