Хорошо, я дошел до сохранения в локальную папку и удаления из сообщения. Я еще не разработал кнопки, но я уверен, что это не самая сложная вещь в мире ...
Итак, я бы ознакомился с документацией VBA по Методы присоединения , в частности, по SaveAsFile
, так как в ней есть полный пример, который я использовал для тестирования. Вам доступны два метода:
SaveAsFile
и
Delete
Но поскольку VBA не делает ничего простого, для использования этих двух строк требуется еще 15.
Также есть ДЕЙСТВИТЕЛЬНО отличный сайт под названием outlookcode.com . Администратор сайта - мастер VBA / Outlook, и он лично ответит на ваши вопросы, если они будут сидеть на форумах более суток (не гарантия, только мой опыт). Сайт полон источников и чужого кода и т. Д.
Вот что я написал, чтобы опробовать то, что вы имели в виду, основываясь на образце из MSDN, в который я добавил метод удаления, сделав его одним нажатием кнопки сохранить / удалить:
Sub getAttatchment()
Dim myInspector As Outlook.Inspector
Dim myItem As Outlook.MailItem
Dim myAttachments As Outlook.Attachments
Set myInspector = Application.ActiveInspector
If Not TypeName(myInspector) = "Nothing" Then
If TypeName(myInspector.CurrentItem) = "MailItem" Then
Set myItem = myInspector.CurrentItem
Set myAttachments = myItem.Attachments
If myAttachments.Item(1).DisplayName = "" Then
Set myAttachments.Item(1).DisplayName = myAttachments.Item(1).FileName
End If
myAttachments.Item(1).SaveAsFile Environ("HOMEPATH") _
& "\My Documents\" & myAttachments.Item(1).DisplayName
myAttachments.Item(1).Delete
Else
MsgBox "The item is of the wrong type."
End If
End If
End Sub
Имейте в виду, что в исходном образце есть диалоговое окно, чтобы спросить пользователя, уверены ли они в том, что он хочет сохранить, поскольку он перезапишет любые файлы с тем же именем. Я удалил его, чтобы немного упростить код.