[Outlook VBA] 快速的把讀取窗格全部關掉 - 返回 最初的純真性情 - udn部落格
返回 最初的純真性情
作家:ThisIsTheWay
文章分類
    Top
    [Outlook VBA] 快速的把讀取窗格全部關掉
    2009/06/09 02:34:36
    瀏覽:8234
    迴響:3
    推薦:3
    引用0

    *這裡所說的 "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 裡使用巨集

    回應
    迴響(3) :
    3樓. ALEX
    2011/06/16 11:49
    使用有效性?

    您好

    感謝提供此一方式 但我執行巨集後直接跳到垃圾郵件夾且未全部關閉預覽耶!?

    想請問有要修正哪裡嗎? 謝謝 

    可以更詳細的描述你的執行環境嗎? 例如: Windows 版本, Office (Outlook) 版本... ...
    因我最近都很少上UDN,方便的話請email給我:

    way_kkiimmoo@yahoo.com.tw
    ThisIsTheWay2011/06/21 11:17回覆
    2樓. K
    2010/07/06 14:48
    感謝大大~
    大大您好,感謝您的教學,不好意思冒昧請問對於Outlook 2007以及Outlook XP 是否也是一樣的處理方式呢^^" 如有打擾請多見諒~
    Outlook 2007 好像沒有這種問題,所以也就沒必要用這個巨集程式。 ThisIsTheWay2011/06/21 11:13回覆
    1樓. the dreamer girl
    2009/06/10 14:50
    高級班

    這對我來說有點狀況外

    因為我很少用到 outlook


    the dreamer girl~~ 最新作品:


    馬來西亞-吉隆坡市區觀光

    嗯,謝謝你提醒了我,趕快加了一張圖片,讓平時少用 Outlook 的人也知道什麼是 "讀取窗格"。其實,對常用Outlook的人而言,這樣的需求也不多見,但唯有寫個VBA程式才能解決。把它貼出來,是為了讓有這種特殊需求的人能在此找到解決,希望如此吧!

    ThisIsTheWay2009/06/10 15:19回覆
    發表迴響

    會員登入