在 Outlook 2013 中刪除來源後刪除先前下載的 RSS 項目

在 Outlook 2013 中刪除來源後刪除先前下載的 RSS 項目

我已透過「檔案」>「帳戶設定」>「RSS 來源」在 Outlook 2013 中刪除了我的 RSS 來源

但是,RSS 來源在 Outlook 2013 的左側仍然可用。那這是怎麼回事,我該怎麼辦?

答案1

您一定會喜歡 Microsoft 與其 UI 約定的不一致,例如透過 Shift/Ctrl-單擊進行多項選擇 - 有時它們有效,有時則無效,而事實證明這是解決此問題的最簡單方法問題是透過Visual Basic 自動化解決的。

序言:我已經在 Outlook 2007 中對此進行了測試,這是我目前可以存取的唯一版本;也就是說,根據我的經驗,Outlook VBA API 通常相當穩定,我不希望它只在兩個主要版本中發生如此巨大的變化,以至於阻止以下程式碼工作。如果失敗,請盡可能詳細地評論描述其不當行為,我將嘗試調試。

首先透過Alt-開啟 VBA 編輯器F11。 (如果這不起作用,您可以從“開發人員”選項卡中打開編輯器,您首先需要新增到功能區。您可以透過按一下「檔案」選項卡,然後按一下「選項」來完成此操作;在“選項”視窗中,按一下左側窗格中的“自訂功能區”,從“自訂功能區”下拉清單中選擇“主選項卡”,然後選取“開發人員”方塊。出現「開發人員」標籤後,選擇它,然後按一下「Visual Basic」。

在 Visual Basic 編輯器中,展開“Project1”,然後展開“Microsoft Office Outlook Objects”;然後,右鍵單擊“ThisOutlookSession”並選擇“插入”,然後選擇“模組”。這將為您提供一個名為“Project1 - Module1(代碼)”的空白視窗。在該視窗中,貼上以下內容,該內容源自這裡

Private Function GetFolder(ByVal FolderPath As String) As Outlook.folder
    Dim TestFolder As Outlook.folder
    Dim FoldersArray As Variant
    Dim i As Integer

    On Error GoTo GetFolder_Error
    If Left(FolderPath, 2) = "\\" Then
        FolderPath = Right(FolderPath, Len(FolderPath) - 2)
    End If
    'Convert folderpath to array
    FoldersArray = Split(FolderPath, "\")
    Set TestFolder = Application.Session.folders.Item(FoldersArray(0))
    If Not TestFolder Is Nothing Then
        For i = 1 To UBound(FoldersArray, 1)
            Dim SubFolders As Outlook.folders
            Set SubFolders = TestFolder.folders
            Set TestFolder = SubFolders.Item(FoldersArray(i))
            If TestFolder Is Nothing Then
                Set GetFolder = Nothing
            End If
        Next
    End If
    'Return the TestFolder
    Set GetFolder = TestFolder
    Exit Function

    GetFolder_Error:
        Set GetFolder = Nothing
        Exit Function
End Function

Private Sub DeleteFolders(ByVal oFolder As Outlook.folder)
    Dim folders As Outlook.folders
    Dim folder As Outlook.folder
    Dim foldercount As Integer

    On Error Resume Next
    Set folders = oFolder.folders
    foldercount = folders.Count
    If foldercount Then
        For Each folder In folders
            folder.Delete
            DeleteFolders folder
        Next
    End If
End Sub

Sub DeleteAllRssFeedsFolders()
    Dim folder As Outlook.folder
    ' If your PST isn't loaded under the name "Personal Folders", then edit the 
    ' folder path below and replace "Personal Folders" with whatever name heads
    ' the folder tree whose RSS feed contents you wish to remove.
    Set folder = GetFolder("\\Personal Folders\RSS Feeds")
    If Not (folder Is Nothing) Then
        DeleteFolders folder
    End If
End Sub

在底部附近,請注意以下內容:GetFolder("\\Personal Folders\RSS Feeds")。在不太可能的情況下,您的資料夾樹的標題不是“個人資料夾”,您將需要編輯此行以將“個人資料夾”替換為資料夾樹的標題名稱。如果不這樣做,程式碼將會失敗,而且可能是默默地失敗。

貼上程式碼並完成任何必要的編輯後,按 F5 運行程式碼,或按一下「執行」選單,然後按一下「執行子/使用者窗體」。系統應該提示您選擇要執行的巨集;清單中唯一已選擇的項目應該是「DeleteAllRssFeedsFolders」。如有必要,請選擇該項目,然後按一下「執行」。您應該會看到 RSS 資料夾立即開始消失;這個過程可能需要一兩分鐘才能完成,尤其是要刪除數百個資料夾,但一旦完成,您的問題就應該解決。

如果您懷疑這是您想要經常執行的操作,您可能需要保存 VBA 項目,並可能還添加一個選單/功能區項來調用它,這是我沒有特別興趣或知識的任務,並且因此,留給有興趣的讀者當作練習。 (如果您在任何其他時間都不儲存該項目,則關閉 Outlook 時系統將提示您儲存它;如果您不想保留它,只需說「否」即可。)

相關內容