字體:小 中 大 | |
|
|
2009/06/09 02:34:36瀏覽8235|回應3|推薦3 | |
*這裡所說的 "Outlook" 是指 "Microsoft Office (我用的是2003版)" 裡的 Outlook,不是 Outlook Express。Outlook Express 不支援 VBA。
Outlook 2003 的信件的讀取窗格 (Preview Pane) 是每個資料夾個別設定的。有位朋友問:『有什麼辦法設定 "關" 而全部資料夾的信件讀取窗格就關掉?因為他的信件資料夾分類少說有100個 (好嚇人!),每次系統重灌就要全部一個一個關掉,實在太累了說!!』 我特別針對他的問題,用 VBA 寫了 Outlook 巨集。把底下的程式碼貼到 Outlook 裡去,然後執行 HideAllPreviewPanes 這個巨集,就可以把收件匣、寄件匣、垃圾郵件這三個資料夾,和它們裡面所有的子資料夾(subfolders) 的 "讀取窗格" 統統關掉。
Sub HideAllPreviewPanes()
Dim myNameSpace As Outlook.NameSpace Dim myFolder As Outlook.MAPIFolder Dim c As Variant, arrC As Variant arrC = Array(olFolderInbox, olFolderOutbox, olFolderJunk) Set myNameSpace = Application.GetNamespace("MAPI") For Each c In arrC Set myFolder = myNameSpace.GetDefaultFolder(c) Call HideFolderPreviewPane(myFolder) Next c End Sub Sub HideFolderPreviewPane(ByRef thisFolder As Outlook.MAPIFolder) Dim subFolder As Outlook.MAPIFolder Set Application.ActiveExplorer.CurrentFolder = thisFolder Do i = i + 1 DoEvents Loop Until i = 9999 'Delay Application.ActiveExplorer.ShowPane olPreview, False If thisFolder.Folders.Count <> 0 Then For Each subFolder In thisFolder.Folders Call HideFolderPreviewPane(subFolder) Next subFolder End If End Sub 在 HideAllPreviewPanes() 裡,用迴圈重覆呼叫HideFolderPreviewPane(),分別處理收件匣、寄件匣、垃圾郵件這三個資料夾。你若讀過 把 email 附件檔全部存入一個資料夾 這篇文章,就知道 "olFolderInbox, olFolderOutbox, olFolderJunk" 這三個常數的意義。 在 HideFolderPreviewPane() 裡,先把指定的資料夾設為 Active (就是Current Folder),然後用 ShowPane 方法,把 "olPreview" 也就是指 "Preview Pane" 關掉。經實驗得證,這兩個動作之間必須延遲一下,才能得到預期效果。 因為資料夾可能有子資料夾,子資料夾又可能有孫資料夾,無法預期有幾層,所以我用 "遞迴呼叫 (Recursion Call)" 的做法寫 HideFolderPreviewPane() ,也就是如果有子資料夾, HideFolderPreviewPane() 就呼叫它自己來處理子資料夾。 ※ 關於如何在 Outlook 裡執行巨集,請看這篇文章: 在 Outlook 裡使用巨集
|
|
( 興趣嗜好|電腦3C ) |