Вот еще несколько вариантов с этим.
Следующий код работает в Outlook 2000 и выше. Он сохраняет вложения из выбранных сообщений, но не удаляет вложения из сообщений.
...
Скопируйте и вставьте код с этой страницы в ваш проект ThisOutlookSession.
В Outlook нажмите Alt + F11, чтобы открыть редактор VBA и развернуть объекты Microsoft Outlook, затем дважды щелкните ThisOutlookSession, чтобы открыть его на панели редактирования, и Ctrl + V, чтобы вставить код.
Чтобы использовать его, вы должны сначала создать папку в папке «Мои документы» с именем OLAttachments (код не создаст ее для вас). Затем выберите одно или несколько сообщений и запустите макрос, чтобы сохранить вложения. Вам нужно установить защиту макросов, чтобы они предупреждали перед включением макросов или подписали макрос. Вы можете изменить имя или путь к папке, в которой сохраняются вложения, отредактировав код.
Public Sub SaveAttachments()
Dim objOL As Outlook.Application
Dim objMsg As Outlook.MailItem 'Object
Dim objAttachments As Outlook.Attachments
Dim objSelection As Outlook.Selection
Dim i As Long
Dim lngCount As Long
Dim strFile As String
Dim strFolderpath As String
Dim strDeletedFiles As String
' Get the path to your My Documents folder
strFolderpath = CreateObject("WScript.Shell").SpecialFolders(16)
On Error Resume Next
' Instantiate an Outlook Application object.
Set objOL = CreateObject("Outlook.Application")
' Get the collection of selected objects.
Set objSelection = objOL.ActiveExplorer.Selection
' The attachment folder needs to exist
' You can change this to another folder name of your choice
' Set the Attachment folder.
strFolderpath = strFolderpath & "\OLAttachments\"
' Check each selected item for attachments.
For Each objMsg In objSelection
Set objAttachments = objMsg.Attachments
lngCount = objAttachments.Count
If lngCount > 0 Then
' Use a count down loop for removing items
' from a collection. Otherwise, the loop counter gets
' confused and only every other item is removed.
For i = lngCount To 1 Step -1
' Get the file name.
strFile = objAttachments.Item(i).FileName
' Combine with the path to the Temp folder.
strFile = strFolderpath & strFile
' Save the attachment as a file.
objAttachments.Item(i).SaveAsFile strFile
Next i
End If
Next
ExitSub:
Set objAttachments = Nothing
Set objMsg = Nothing
Set objSelection = Nothing
Set objOL = Nothing
End Sub