2017-09-10 3 views
1

ALL TITLES in ALL RSS FEEDSを比較して重複を削除する方法があるのだろうかと思います。すべてのRSSフィードのすべてのタイトルを比較して重複を削除するにはどうすればよいですか?

私はたくさんのフィードを読んでいます。多くの人が複数のフォーラムにクロスポストしてから、同じものを見ることになります。RSS複数回フィード。

すべての

Option Explicit 
Public Sub DupeRSS() 
    Dim olNs As Outlook.NameSpace 
    Dim RSS_Folder As Outlook.MAPIFolder 

    Set olNs = Application.GetNamespace("MAPI") 
    Set RSS_Folder = olNs.GetDefaultFolder(olFolderRssFeeds) 

    'Process Current Folder 
    Example RSS_Folder 
End Sub 
Public Sub Example(ByVal ParentFolder As Outlook.MAPIFolder) 
    Dim itm As Object, itms As Items, dupes As Object, i As Long, k As Variant 

    Set dupes = CreateObject("Scripting.Dictionary") 
    Set itms = ParentFolder.Items 

    For i = itms.Folders.Count To 1 Step -1 
     Set itm = itms(i) 
     If TypeOf itm Is PostItem Then 
      If dupes.Exists(itm.Subject) Then itm.Delete Else dupes(itm.Subject) = 0 
     Else 
      Example itm  'Recursive call for Folders 
     End If 
    Next i 

    'Show dictionary items 
    If dupes.Count > 0 Then 
     For Each k In dupes 
      Debug.Print k 
     Next 
    End If 

    Set itm = Nothing: Set itms = Nothing: Set dupes = Nothing 
End Sub 

enter image description here

おかげで.....私は、スクリプトは次のようになりますと思いますが、dupesを削除していないようです!

答えて

1

は私のように見えます誤解されました 上のあなた以前question

は多分これはあなたがやろうとし、次のコードは、セーブ/コレクションのすべてのアイテムの件名を追加し、複数のフォルダを検索し続け、それがduplicates-見つかった場合は削除するものです

Option Explicit 
Public Sub DupeRSS() 
    Dim olNs As Outlook.NameSpace 
    Dim RSS_Folder As Outlook.MAPIFolder 
    Dim DupItem As Object 

    Set DupItem = CreateObject("Scripting.Dictionary") 
    Set olNs = Application.GetNamespace("MAPI") 
    Set RSS_Folder = olNs.GetDefaultFolder(olFolderRssFeeds) 

' // Process Current Folder 
    Example RSS_Folder, DupItem 
End Sub 
Public Sub Example(ByVal ParentFolder As Outlook.MAPIFolder, _ 
        ByVal DupItem As Object) 
    Dim Folder As Outlook.MAPIFolder 
    Dim Item As Object 
    Dim Items As Items 
    Dim i As Long 

    Set Items = ParentFolder.Items 
    Debug.Print ParentFolder.Name 

    For i = Items.Count To 1 Step -1 
     DoEvents 

     If TypeOf Items(i) Is PostItem Then 
      Set Item = Items(i) 
      If DupItem.Exists(Item.Subject) Then 
       Debug.Print Item.Subject ' Print on Immediate Window 
       Debug.Print TypeName(Item) ' Print on Immediate Window 
       Item.Delete 
      Else 
       DupItem.Add Item.Subject, 0 
       Debug.Print DupItem.Count, Item.Subject 
      End If 
     End If 

    Next i 

' // Recurse through subfolders 
    If ParentFolder.Folders.Count > 0 Then 
     For Each Folder In ParentFolder.Folders 
      Example Folder, DupItem 
      Debug.Print Folder.Name 
     Next 
    End If 

    Set Folder = Nothing 
    Set Item = Nothing 
    Set Items = Nothing 
End Sub 
+1

Ahhhhhh!これは美しいものです!これはまさに私が欲しいものです!どうもありがとうございます!! – ryguy72

0


Option Explicit 

'Required - VBA Editor -> Tools -> References: Microsfot Outlook XXX Object Library 
'Required - VBA Editor -> Tools -> References: Microsfot Scripting Runtime (Dictionary) 

Public Sub RemoveRSSduplicates() 
    Dim olNs As Outlook.Namespace, olApp As Object, rssFolder As Folder, d As Dictionary 

    Set olApp = GetObject(, "Outlook.Application") 
    Set olNs = olApp.GetNamespace("MAPI") 
    Set rssFolder = olNs.GetDefaultFolder(olFolderRssFeeds) 
    Set d = CreateObject("Scripting.Dictionary") 

    ProcessOutlookRSSFeeds rssFolder, d 
End Sub 

Public Sub ProcessOutlookRSSFeeds(ByVal rssFolder As Folder, ByRef d As Dictionary) 
    Dim fldr As Folder, itm As Object 

    For Each fldr In rssFolder.Folders 
     If fldr.Items.Count > 0 Then 
      For Each itm In fldr.Items 
       If TypeOf itm Is PostItem Then 
        If Not d.Exists(itm.Subject) Then d(itm.Subject) = 0 Else itm.Delete 
       End If 
      Next 
     End If 
    Next 
End Sub 

注怒鳴るの変更を試してみてください:(EX Dim Items As Items)他のオブジェクトを非表示になります変数名を避ける

+0

これは非常に奇妙です。今、私はこの行にエラーが表示されます。For i = itms.Folders.Count To 1 Step -1。エラーメッセージが表示されます。オブジェクトは、このプロパティまたはメソッドをサポートしていません。私は今私が持っているすべてのコードを更新しました。 – ryguy72

+1

これは、すべてのフォルダと各フォルダ内のすべてのサブジェクトをループしているようですが、フォーカスがあるフォルダから次のフォルダに移動するとすぐに、以前のフォルダ内のすべてのサブジェクトが失われてしまいます。それが最初の問題だと思うし、今も同じようだ。ああ。他のアイデア?ありがとう。 – ryguy72

関連する問題