The following code worked for older versions of Outlook (2000 I believe), but does not work for newer versions. There used to be a junk button on the toolbar. The code effectively activated that button. I’m not sure how to do it in newer version of Outlook. I have actually given up on Outlook’s spam filtering and use SpamAssassian now. You might check out Wininspector to track down the right object.
If anyone figures out a solution, please email me know. I have had several people ask about this.
This code combines the frequently used steps of adding the senders of all selected e-mails to the Outlook “Junnk Sender’s List” and then moving the messages to the junk mail folder. I then create a toolbar button associated with this “macro.”
The core of which is based on code from Sue Mosher’s article in Windows & .Net Magazine and the kludge to access the unpublished “Add to Junk Senders” is from Rick Pearce’s post to the microsoft.public.outlook.program_vba newsgroup.
' Copyright under GPL by Mark Grimes Sub DealJunkMail() Dim objApp As Application Dim objSelection As Selection Dim blnDoIt As Boolean Dim intMaxItems As Integer Dim intOKToExceedMax As Integer Dim strMsg As String ' ### set your maximum selection size here ### intMaxItems = 5 Set objApp = CreateObject("Outlook.Application") Set objSelection = objApp.ActiveExplorer.Selection Select Case objSelection.Count Case 0 strMsg = "No items were selected" MsgBox strMsg, , "No selection" blnDoIt = False Case Is > intMaxItems strMsg = "You selected " & _ objSelection.Count & " items. " & _ "Do you really want to process " & _ "that large a selection?" intOKToExceedMax = MsgBox( _ Prompt:=strMsg, _ Buttons:=vbYesNo + vbDefaultButton2, _ Title:="Selection exceeds maximum") If intOKToExceedMax = vbYes Then blnDoIt = True Else blnDoIt = False End If Case Else blnDoIt = True End Select If blnDoIt = True Then ' ### set the procedure to run on the selection here ### Call AddToJunkAndMove(objSelection) Beep ' alert the user that we're done 'MsgBox "All done!", , "Selection" End If Set objSelection = Nothing Set objApp = Nothing End Sub Sub AddToJunkAndMove(objSel As Selection) Dim objItem As Object Dim objNS As NameSpace Dim objDestFolder As MAPIFolder Dim myOlApp As Outlook.Application Set objNS = Application.GetNamespace("MAPI") Set objDestFolder = objNS.Folders.Item("Mailbox - Mark Grimes").Folders.Item("Junk E-mail") Set myOlApp = CreateObject("Outlook.Application") Dim ctl As CommandBarControl ' Junk E-mail flyout menu Dim subctl As CommandBarControl ' Add to Junk Senders list menu Set ctl = myOlApp.ActiveExplorer.CommandBars.FindControl(Type:=msoControlPopup, ID:=31126) Set subctl = ctl.CommandBar.Controls(1) 'MsgBox subctl.Caption subctl.Execute For Each objItem In objSel If objItem.Class = olMail Then objItem.Move objDestFolder End If Next Set objDestFolder = Nothing Set objNS = Nothing Set objItem = Nothing End Sub
The contents of this blog are licensed under the Creative Commons “Attribution-Noncommercial-Share Alike 3.0″ license.