KutoolsforOffice — 一套方案,五大工具。事半功倍。三月特賣:20% 折扣

如何在 Outlook 中將未讀郵件加入「我的最愛」資料夾?

作者Kelly修改日期

有時未讀電子郵件可能混雜在大量郵件中,即使 Outlook 已標示未讀郵件數量(例如)收件匣(5)),您仍難以立即找出它們。其實,只要將所有未讀郵件集中到「我的最愛」資料夾,就能讓您的工作更便利、更快速!

以下操作指引將協助您將所有未讀郵件集中至「未讀郵件」資料夾,並把該資料夾加入我的最愛以便快速存取。

步驟 1:按一下導航中的郵件,即可切換至郵件檢視畫面。

步驟 2:建立新的搜尋資料夾:

  1. 在 Outlook 2010/2013 中,請點選資料夾頁籤中新增群組內的新增搜尋資料夾按鈕。
  2. 在 Outlook 2007 中,點選檔案 新增 搜尋資料夾

doc-new-search-folder

其實還有另一種方法可建立新的搜尋資料夾:在導航窗格中的搜尋資料夾上按一下滑鼠右鍵,然後於快捷選單中點選新增搜尋資料夾

doc-new-search-folder-2

此方法適用於 Microsoft Outlook 2007、2010 與 2013 所有版本。

步驟 2:在「新增搜尋資料夾」對話方塊中,選取並反白標示未讀郵件項目,然後點擊確定

doc-unread-favorite-2

現在已建立一個未讀郵件資料夾,並顯示於導航窗格中。所有未讀郵件都會自動集中至此資料夾;一旦開啟某封未讀郵件,該郵件便會立即從「未讀郵件」資料夾中移除!

步驟 3:在未讀郵件資料夾上按一下滑鼠右鍵,然後於快捷選單中點選在「我的最愛」中顯示項目。

doc-unread-favorite-3

現在「未讀郵件」資料夾已複製,並新增至導航頂端的「我的最愛」中。

doc-unread-favorite-4

提示:若您想將所有帳戶的未讀郵件全部加入同一個資料夾,可依照下列步驟操作:

1. 按下 Alt + F11 鍵,開啟 Microsoft Visual Basic for Applications 視窗。在專案窗格中,依序點選 Microsoft Outlook 物件ThisOutlookSession,並將下方程式碼貼上至右側編輯區。

Public WithEvents OlExplprer As Outlook.Explorer
Public WithEvents OlMailItem As Outlook.MailItem
Dim xSelMail As MailItem

Private Sub Application_NewMail()
   AddAllAccountsUnreadMailsToAFolder
   IniEvent
End Sub

Public Sub Initialize_handler()
    Set OlExplprer = Application.ActiveExplorer
    If OlExplprer.Selection.Count <> 0 Then
        Set OlMailItem = OlExplprer.Selection.Item(1)
    End If
End Sub

Private Sub OlExplprer_BeforeFolderSwitch(ByVal NewFolder As Object, Cancel As Boolean)

Dim xOlApp As Outlook.Application
Dim xNameSpace As NameSpace
Dim xMailItem, xSelMail As MailItem
Dim xTargetFld As Folder

On Error Resume Next

Set xOlApp = Outlook.Application
Set xNameSpace = xOlApp.GetNamespace("MAPI")

If NewFolder.Name = "Unread Mail" Then

    For Each xMailItem In NewFolder.Items
        
        If xMailItem.UnRead = False Then
        
            xMailItem.Delete
        
        End If
    
    Next

Else

    For Each xTargetFld In xNameSpace.Folders.Item(1).Folders

        If xTargetFld.Name = "Unread Mail" Then

            For Each xMailItem In xTargetFld.Items
                
                If (OlExplprer.Selection.Count <> 0) Then
                    
                    Set xSelMail = OlExplprer.Selection.Item(1)
    
                    If xSelMail.UnRead Then

                        xSelMail.UnRead = False
                        
                    End If
                
                End If
            Next
         
        End If
    Next
  
End If
    
Cancel = False

End Sub

Private Sub OlExplprer_FolderSwitch()

Dim xOlApp As Outlook.Application
Dim xNameSpace As NameSpace
Dim xMailItem As MailItem
Dim xAccountFld, xTargetFld, xSubFolder As MAPIFolder
Dim xObjItem As Object

On Error Resume Next
Set xOlApp = Outlook.Application
Set xNameSpace = xOlApp.GetNamespace("MAPI")

Refresh

If (OlExplprer.CurrentFolder.Name <> "Unread Mail") Then

    For Each xTargetFld In xNameSpace.Folders.Item(1).Folders

        If xTargetFld.Name = "Unread Mail" Then

            For Each xMailItem In xTargetFld.Items

                If xMailItem.UnRead = False Then

                    For Each xAccountFld In xNameSpace.Folders

                        For Each xSubFolder In xAccountFld.Folders

                            If (xSubFolder.Name <> "Deleted Items") And (xSubFolder.Name <> "Drafts") And (xSubFolder.Name <> "Outbox") And (xSubFolder.Name <> "Junk E-mail") Then

                                For Each xObjItem In xSubFolder.Items

                                    If xObjItem.Class = olMail Then

                                        If (xObjItem.Subject = xMailItem.Subject) And (xObjItem.SenderName = xMailItem.SenderName) And _
                                           (xObjItem.Body = xMailItem.Body) And (xObjItem.Attachments.Count = xMailItem.Attachments.Count) And _
                                           (xObjItem.SentOn = xMailItem.SentOn) Then
                                                
                                            xObjItem.UnRead = False

                                        End If

                                    End If

                                Next

                            End If

                        Next

                    Next

                End If

            Next

        End If

    Next

End If

End Sub

Private Sub OlExplprer_SelectionChange()

Dim xOlApp As Outlook.Application
Dim xNameSpace As NameSpace

On Error Resume Next
Set xOlApp = Outlook.Application
Set xNameSpace = xOlApp.GetNamespace("MAPI")

If (OlExplprer.CurrentFolder.Name = "Unread Mail") And (OlExplprer.Selection.Count <> 0) Then

    SelUnreadMailFld OlExplprer.CurrentFolder.Items, xNameSpace.Folders

Else

    If (OlExplprer.CurrentFolder.Name <> "Deleted Items") And (OlExplprer.CurrentFolder.Name <> "Drafts") And _
       (OlExplprer.CurrentFolder.Name <> "Outbox") And (OlExplprer.CurrentFolder.Name <> "Junk E-mail") Then
       
       SelOtherFld xNameSpace.Folders.Item(1).Folders
        
    End If

End If

End Sub

Sub SelUnreadMailFld(EMails As Outlook.Items, Flds As Folders)

Dim xMailItem As MailItem
Dim xAccountFld, xSubFolder As Folder
Dim xObjItem As Object
On Error Resume Next
For Each xMailItem In EMails 'OlExplprer.CurrentFolder.Items

    If xMailItem.UnRead = False Then

        For Each xAccountFld In Flds

            For Each xSubFolder In xAccountFld.Folders

                If (xSubFolder.Name <> "Deleted Items") And (xSubFolder.Name <> "Drafts") And (xSubFolder.Name <> "Outbox") And (xSubFolder.Name <> "Junk E-mail") Then

                    For Each xObjItem In xSubFolder.Items

                        If xObjItem.Class = olMail Then

                            If (xObjItem.Subject = xMailItem.Subject) And (xObjItem.SenderName = xMailItem.SenderName) And _
                               (xObjItem.Body = xMailItem.Body) And (xObjItem.Attachments.Count = xMailItem.Attachments.Count) And _
                               (xObjItem.SentOn = xMailItem.SentOn) Then

                                If xObjItem.UnRead Then

                                    xObjItem.UnRead = False

                                End If

                            End If

                        End If

                    Next

                End If

            Next

        Next

    End If

Next

End Sub

Sub SelOtherFld(Flds As Folders)
Dim xSelItem, xMailItem As MailItem
Dim xTargetFld As Folder
    
On Error Resume Next
If OlExplprer.Selection.Count <> 0 Then
      
    Set xSelItem = OlExplprer.Selection.Item(1)

    If xSelItem.UnRead = False Then

        For Each xTargetFld In Flds

            If xTargetFld.Name = "Unread Mail" Then

                For Each xMailItem In xTargetFld.Items

                    If (xSelItem.Subject = xMailItem.Subject) And (xSelItem.SenderName = xMailItem.SenderName) And _
                       (xSelItem.Body = xMailItem.Body) And (xSelItem.Attachments.Count = xMailItem.Attachments.Count) And _
                       (xSelItem.SentOn = xMailItem.SentOn) Then

                        xMailItem.UnRead = False

                    End If

                Next

            End If
        Next

    End If

End If

End Sub


Sub Refresh()
  
Dim xOlApp As Outlook.Application
Dim xNameSpace As NameSpace
Dim xTargetFld As MAPIFolder
Dim xAllUnreadMails As Integer

On Error Resume Next
Set xOlApp = Outlook.Application
Set xNameSpace = xOlApp.GetNamespace("MAPI")

xAllUnreadMails = AllUnreadMails()

For Each xTargetFld In xNameSpace.Folders.Item(1).Folders

    If xTargetFld.Name = "Unread Mail" Then

        If xAllUnreadMails <> xTargetFld.Items.Count Then
            
            AddAllAccountsUnreadMailsToAFolder
            
            Exit For
        
        End If
    
    End If
    
Next

End Sub

Function AllUnreadMails()

Dim xOlApp As Outlook.Application
Dim xNameSpace As NameSpace
Dim xAllUnreadMails As Integer

On Error Resume Next
Set xOlApp = Outlook.Application
Set xNameSpace = xOlApp.GetNamespace("MAPI")

xAllUnreadMails = 0
For Each xFolders In xNameSpace.Folders

   For Each xSubFolder In xFolders.Folders
   
     If xSubFolder.Name <> "Unread Mail" Then
     
     If (xSubFolder.Name <> "Deleted Items") And (xSubFolder.Name <> "Drafts") And (xSubFolder.Name <> "Outbox") And (xSubFolder.Name <> "Junk E-mail") Then

         For Each xObjItem In xSubFolder.Items
    
            If xObjItem.Class = olMail Then
    
               If xObjItem.UnRead Then
               
                 xAllUnreadMails = xAllUnreadMails + 1
    
               End If
    
            End If
         Next
         
        End If
     
     End If

   Next

Next

AllUnreadMails = xAllUnreadMails
End Function
資料夾中的所有新聞 1

 

2. 接著插入一個新模組,並將下方程式碼貼入該模組的指令碼中。

Public Sub AddAllAccountsUnreadMailsToAFolder()
Dim xOlApp As Outlook.Application
Dim xNameSpace As NameSpace
Dim xFolders, xSubFolder As MAPIFolder
Dim xObjItem As Object
Dim xDelFld As Folder
Dim xUnreadMailFld, xOldUnreadMailFld As Folder
Dim xCopiedItem, xMailItem As MailItem

On Error Resume Next
Set xOlApp = Outlook.Application
Set xNameSpace = xOlApp.GetNamespace("MAPI")

For Each xOldUnreadMailFld In xNameSpace.Folders.Item(1).Folders
    If xOldUnreadMailFld.Name = "Unread Mail" Then
        xOldUnreadMailFld.Delete
        Exit For
    End If
Next

For Each xDelFld In xNameSpace.Folders.Item(1).Folders
    If xDelFld.Name = "Deleted Items" Then
        For Each xMailItem In xDelFld.Items
            xMailItem.Delete
        Next
        For Each xSubFolder In xDelFld.Folders
        'For i = xDelFld.Folders.Count To 1 Step -1
            xSubFolder.Delete
        Next
    End If
Next

Set xUnreadMailFld = xNameSpace.Folders.Item(1).Folders.Add("Unread Mail")
If xUnreadMailFld = nil Then
    Exit Sub
End If


For Each xFolders In xNameSpace.Folders

   For Each xSubFolder In xFolders.Folders
   
     If xSubFolder.Name <> xUnreadMailFld.Name Then
     
     If (xSubFolder.Name <> "Deleted Items") And (xSubFolder.Name <> "Drafts") And (xSubFolder.Name <> "Outbox") And (xSubFolder.Name <> "Junk E-mail") Then

         For Each xObjItem In xSubFolder.Items
    
            If xObjItem.Class = olMail Then
    
               If xObjItem.UnRead Then
                 
                 Set xCopiedItem = xObjItem.Copy
    
                 xCopiedItem.Move xUnreadMailFld
    
               End If
    
            End If
         Next
         
        End If
     
     End If

   Next

Next

IniEvent

End Sub

Public Sub IniEvent()
Dim xFld As ThisOutlookSession
Set xFld = ThisOutlookSession
xFld.Initialize_handler
End Sub
資料夾中的所有新聞 2

 

3. 執行名為 AddAllAccountsUnreadMailsToAFolder 的程式碼,所有未讀郵件將自動歸整至名為未讀郵件的資料夾中!
資料夾中的所有新聞 3

從 Outlook 中的一個或多個聯繫人文件夾移除所有重複聯繫人

有時我們可能會重複新增相同的聯絡人,該如何從一個或多個聯絡人資料夾中快速清除重複項目?此功能可迅速找出所有重複聯絡人,並讓您依指定條件(例如:在一個或多個聯絡人資料夾中比對相同全名或相同電子信箱地址)進行移除或合併,輕鬆整理您的聯絡人資料!立即點擊即可享有為期 30 天、功能完整的免費試用!Duplicate Contacts
移除重複的聯絡人
 
Kutools for Outlook:內含數十種實用 Outlook 增益集,未來完整 30 天免費試用,毫無限制。

最佳 Office 生產力工具

體驗全新 Kutools for Outlook,內含 100+ 項超強功能!立即點擊下載!

🤖KUTOOLS AI運用先進 AI 技術,輕鬆處理電子郵件——無論是回覆、摘要、優化、擴充、翻譯還是撰寫郵件,通通一鍵搞定!

📧 郵件自動化自動答覆(支援 POP 與 IMAP)預約寄送郵件寄信時依規則自動抄送密送自動轉發(高級規則)自動加入問候語自動將多收件人郵件拆分為個別訊息……

📨 郵件管理撤回郵件依主旨等條件封鎖詐騙郵件刪除重複郵件高級搜尋整合文件夾……

📁 附件專業版批次儲存批次解除附加批次壓縮自動保存自動拆離自動壓縮……

🌟 介面魔法😊更多精美酷炫表情符號重要郵件來到時提醒您最小化 Outlook 而非關閉……

👍 一鍵奇蹟帶附件全部答復防釣魚郵件🕘顯示發送者當前時間時區……

👩🏼‍🤝‍👩🏻 聯絡人與行事曆從選取的郵件中批次新增聯絡人將聯繫人組拆分為個別群組移除生日提醒……

用您的慣用語言暢享 Kutools — 完整支援英文、西班牙文、德文、法文、中文等 40 多種語言!

立即一鍵解鎖 Kutools for Outlook!別再等待,馬上下載,全面提升工作效率!

kutools for outlook features1kutools for outlook features2

🚀 一鍵下載 — 立即取得所有 Office 增益集

強烈推薦:Kutools for Office(5 合 1)

一鍵下載五個安裝程式,一次完成 — Kutools for Excel、Outlook、Word、PowerPointOffice Tab Pro立即點擊下載!

  • 一鍵便利:只需一次操作,即可下載全部五個安裝套件!
  • 🚀 隨時應對任何 Office 任務:按需安裝所需增益集,立即提升工作效率!
  • 🧰 包含:Kutools for Excel/Kutools for Outlook/Kutools for Word/Office Tab Pro/Kutools for PowerPoint