简体   繁体   中英

Searching outlook folder BY attachment filename

I am currently using Outlook 2010 and I am currently able to manually search a folder in outlook by using the "More" button and adding attachments:yes and attachment contains: where I input the filename to find an email and get the timestamp from when it was sent. I have thousands of attachments for which I need to do this and I would like to automate the process but I am an outlook vba noobie and I do not know the command to perform the search by attachment name, I have tried googling this but to no avail any help would be greatly appreciated thanks!

You can use Restrict https://msdn.microsoft.com/en-us/library/office/ff869597.aspx

Example here: http://www.jpsoftwaretech.com/save-all-attachments-from-selected-folder/

Set newItems = itms.Restrict("[Attachment] > 0")

Combined with:

attName = MsgAttach.Item(attachmentNumber)

If InStr(attName, "search string here") Then
    Debug.Print "- " & attName
End If

Outlook Object Model will not let you search for an item with a particular attachment file name. You can explicitly loop through all items in the folder and check the attachment filename, but that will be highly inefficient.

On the Extended MAPI level (C++ or Delphi) you can create a subrestriction on the attachments. If using Redemption is an option, it allows to specify Attachments in RDOItems .Find/Restrict:

set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set vFolder = Session.GetFolderFromID(Application.ActiveExplorer.CurrentFolder.EntryID)
set vItems = vFolder.Items
set vMsg = vItems.Find("Attachments LIKE '%.zip%' ")
while not (vMsg Is Nothing)
  MsgBox vMsg.Subject
  set vMsg = vItems.FindNext
wend

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM