Удалить ранее загруженные элементы RSS после удаления каналов в Outlook 2013

Удалить ранее загруженные элементы RSS после удаления каналов в Outlook 2013

Я удалил свои RSS-каналы в Outlook 2013 через Файл > Параметры учетной записи > RSS-каналы.

Однако RSS-каналы по-прежнему доступны в левой части Outlook 2013. Я думал, что мне, возможно, придется закрыть и снова открыть Outlook 2013, чтобы изменения [удаление RSS-каналов] вступили в силу, но ничего не происходит. Так что же происходит и что мне делать?

решение1

Вы просто не можете не восхищаться тем, насколько непоследовательна компания Microsoft в отношении своих соглашений по пользовательскому интерфейсу, таких как множественный выбор с помощью Shift/Ctrl-щелчка — иногда они работают, иногда нет, и оказывается, что самый простой способ решения этой проблемы — автоматизация с помощью Visual Basic.

Вступительное замечание: Я тестировал это в Outlook 2007, единственной версии, к которой у меня сейчас есть доступ; тем не менее, API Outlook VBA в целом довольно стабилен, по моему опыту, и я не ожидал бы, что он изменится так радикально всего в двух основных версиях, чтобы помешать работе следующего кода. Если это не сработает, пожалуйста, опишите его неправильное поведение как можно подробнее, и я попытаюсь отладить.

Начните с открытия редактора VBA через Alt- F11. (Если это не сработает, вы можете открыть редактор из вкладки «Разработчик», которую вам сначала нужно будет открыть.добавить на ленту. Это можно сделать, нажав на вкладку Файл, затем Параметры; в окне Параметры нажмите «Настроить ленту» на левой панели, выберите «Основные вкладки» из раскрывающегося списка «Настроить ленту» и установите флажок «Разработчик». Когда у вас появится вкладка Разработчик, выберите ее, затем нажмите «Visual Basic».)

В редакторе Visual Basic разверните "Project1", затем "Microsoft Office Outlook Objects"; затем щелкните правой кнопкой мыши "ThisOutlookSession" и выберите "Insert", затем "Module". Это должно дать вам пустое окно с названием "Project1 - Module1 (Code)". В это окно вставьте следующее, которое изначальноздесь:

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"). В маловероятном случае, если ваше дерево папок не возглавляется именем "Personal Folders", вам нужно будет отредактировать эту строку, заменив "Personal Folders" на любое имя, которое возглавляет ваше дерево папок. Если вы этого не сделаете, код завершится ошибкой, возможно, молча.

После того, как вы вставили код и внесли все необходимые изменения, запустите код, нажав F5 или щелкнув меню «Run», а затем «Run Sub/UserForm». Вам должно быть предложено выбрать макрос для запуска; единственным элементом в списке, уже выбранным, должен быть «DeleteAllRssFeedsFolders». Выберите этот элемент, если необходимо, а затем щелкните «Run». Вы должны увидеть, как папки RSS начинают немедленно исчезать; для завершения процесса может потребоваться минута или две, особенно если нужно удалить несколько сотен папок, но как только это будет сделано, ваша проблема должна быть решена.

Если вы предполагаете, что вам придется делать это часто, вам, вероятно, захочется сохранить проект VBA и, возможно, также добавить элемент меню/ленты для его вызова — задача, в которой я не особо заинтересован и не разбираюсь, и которую я оставляю в качестве упражнения для заинтересованного читателя. (Если вы не сохраните проект в другое время, вам будет предложено сохранить его при закрытии Outlook; если вы не хотите его сохранять, просто скажите «Нет».)

Связанный контент