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

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

1 ответ1

0

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

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

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

В редакторе Visual Basic разверните "Проект1", затем "Объекты Microsoft Office Outlook"; затем щелкните правой кнопкой мыши "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 или нажав меню "Выполнить", а затем «Запустить Sub/UserForm». Вам будет предложено выбрать макрос для запуска; единственный элемент в списке, уже выбранный, должен быть "DeleteAllRssFeedsFolders". При необходимости выберите этот элемент и нажмите "Выполнить". Вы должны увидеть, что папки RSS начинают исчезать немедленно; процесс может занять минуту или две, особенно с удалением нескольких сотен папок, но как только это будет сделано, ваша проблема должна быть решена.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .