
Я удалил свои 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; если вы не хотите его сохранять, просто скажите «Нет».)