
Outlook 2013 の [ファイル] > [アカウント設定] > [RSS フィード] から RSS フィードを削除しました。
ただし、RSS フィードは Outlook 2013 の左側で引き続き利用できます。変更 (RSS フィードの削除) を有効にするには Outlook 2013 を閉じて再度開く必要があると思いましたが、何も起こりません。何が起こっているのでしょうか。どうすればよいでしょうか。
答え1
Microsoft の UI 規則 (Shift キーまたは Ctrl キーを押しながらクリックして複数選択するなど) が一貫していないのが本当に面白いです。うまくいくときもあれば、うまくいかないときもあり、この問題を解決する最も簡単な方法は Visual Basic の自動化であることがわかりました。
序文: 私はこれを Outlook 2007 でテストしました。これは現在私がアクセスできる唯一のバージョンです。とはいえ、私の経験では Outlook VBA API は一般的に非常に安定しており、2 つのメジャー バージョンで次のコードが動作しなくなるほど大幅に変更されるとは思いません。失敗した場合は、できるだけ詳細にその不具合を説明したコメントを投稿してください。デバッグを試みます。
Altまず、 -からVBAエディタを開きますF11。(それが機能しない場合は、まず開発タブからエディタを開く必要があります。リボンに追加するこれを行うには、[ファイル] タブをクリックし、[オプション] をクリックします。[オプション] ウィンドウで、左側のペインの [リボンのユーザー設定] をクリックし、[リボンのユーザー設定] ドロップダウンから [メイン タブ] を選択して、[開発] ボックスをオンにします。[開発] タブが表示されたら、それを選択して [Visual Basic] をクリックします。
Visual Basic エディタで、「Project1」を展開し、「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")
まれに、フォルダー ツリーの先頭に「Personal Folders」という名前が付いていない場合があります。その場合は、この行を編集して、「Personal Folders」をフォルダー ツリーの先頭に付いている名前に置き換える必要があります。そうしないと、おそらく何も表示されずにコードが失敗します。
コードを貼り付けて必要な編集を行ったら、F5 キーを押すか、[実行] メニューをクリックして [Sub/UserForm の実行] をクリックしてコードを実行します。実行するマクロを選択するように求められます。リストで既に選択されている唯一の項目は [DeleteAllRssFeedsFolders] です。必要に応じてその項目を選択し、[実行] をクリックします。RSS フォルダーがすぐに消え始めるのがわかります。特に数百のフォルダーを削除する場合は、プロセスが完了するまでに 1 ~ 2 分かかることがありますが、完了すると問題は解決されるはずです。
これを頻繁に実行する必要があると思われる場合は、おそらく VBA プロジェクトを保存し、それを呼び出すためのメニュー/リボン項目も追加する必要があります。このタスクについては、特に興味も知識もないので、興味のある読者の演習として残しておきます。(プロジェクトを他の時点で保存しない場合は、Outlook を閉じるときに保存するように求められます。プロジェクトを保持したくない場合は、「いいえ」と答えてください。)