MyTetra Share
Делитесь знаниями!
Обработка вложенгий
Время создания: 16.03.2019 23:43
Текстовые метки: VBA, Outlook, attach
Раздел: Разные закладки - VBA - Outlook
Запись: xintrea/mytetra_db_adgaver_new/master/base/1524471753nhoz5jrwba/text.html на raw.githubusercontent.com
есть вот такой код

' этот исполняемый код

Sub СохранитьВложения()


On Error Resume Next

Dim income(1000) As String

Dim FolderName As String

Dim Myf(50) As String

Dim data As Date

Dim MonNum As String

msg = 1


Set myOlApp = CreateObject("Outlook.Application")

Set myNameSpace = myOlApp.GetNamespace("MAPI")



' Тут идет проверка количества оцениваемых сообщений (бежать по всем входящим нет смысла, долго)

Max = myNameSpace.GetDefaultFolder(olFolderInbox).Items.Count + 1

' в частности здесь берется 10 последних сообщений

MesBuffer = 10

If Max < MesBuffer Then MesBuffer = Max - 1

'проверяем больше ли чем 0 сообщений

If Max > 0 Then

' цикл по этим сообщениям

For msg = Max - MesBuffer To Max

' считаем количство вложений

atcount = myNameSpace.GetDefaultFolder(olFolderInbox).Items(msg).Attachments.Count

' смотрим тему

subj = myNameSpace.GetDefaultFolder(olFolderInbox).Items(msg).Subject

' вот тут нужно установить бесплатную прогу, которая убирает уведомления на чтение адресов

' расположена http://www.mapilab.com/ru/outlook/security прога бесплатна и для коммерческого и для некоммерческого использования


' смотрим ИФО отправителя

SendName = myNameSpace.GetDefaultFolder(olFolderInbox).Items(msg).SenderName

' адрес отправителя

Send = myNameSpace.GetDefaultFolder(olFolderInbox).Items(msg).SenderEmailAddress


' Если сообщение имеет статус непрочтеное и вложений не равно 0

If myNameSpace.GetDefaultFolder(olFolderInbox).Items(msg).UnRead = True And atcount <> 0 Then

' цикл по всем вложениям

For I = 1 To atcount

' наименование вложения

income(msg) = myNameSpace.GetDefaultFolder(olFolderInbox).Items(msg).Attachments(1)


' тут можно сделать проверку наименования вложения

' проверка


' задаем место хранения (можно в зависимости от наименования вложения назначить путь по условию

pathOL = "E:\New\"

' Наименование файла вложения Адрес + Тема + НомерСообщения + НомерВложения + НаименованиеВложения (номер сообщения от конца)

MessageName = Send & subj & (Max - msg) & I & income(msg)

' проверяем файл на существование, если он существует в цикле создаем новую версию и ещё раз проверяем

N = 0

Do While Dir(pathOL & MessageName) <> ""

N = N + 1

MessageName = N & Send & subj & (Max - msg) & I & income(msg)

Loop

' сохраняем вложение

myNameSpace.GetDefaultFolder(olFolderInbox).Items(msg).Attachments(1).SaveAsFile pathOL & MessageName


'End If

Next I

' конец файлов непрочитанных со вложениями

End If

' помечаем сообщение как прочитанное (любое)

myNameSpace.GetDefaultFolder(olFolderInbox).Items(msg).UnRead = False

'следующее вложение

Next msg

' очищаем память

Erase income

' завершаем проверку на количество сообщений больше 0

End If


End Sub



доработайте под свою задачу

Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования