01 Что делает макрос
Если вы отправляете шаблон бюджета для каждого руководителя филиала, чтобы они заполнили и отправили его вам обратно по электронной почте. В этом макросе мы сможем автоматизированно найти все вложения в почтовом ящике и сохранить их в указанную папку.
Поскольку этот код запускается из Excel, необходимо установить ссылку на библиотеку объектов Microsoft Outlook. Мы можем установить ссылку, открыв редактор Visual Basic в Excel и выбрав Tools➜References. Прокрутите вниз, пока не найдете запись Microsoft Outlook XX Object Library, где XX— это ваша версия Outlook. Установите флажок рядом с записью.
02 Код макроса
Sub
SohranitVseVlojeniya()
'Шаг 1: Объявляем переменные
Dim
ns
As
Namespace
Dim
MyInbox
As
MAPIFolder
Dim
MItem
As
MailItem
Dim
Atmt
As
Attachment
Dim
FileName
As
String
'Шаг 2: Установите ссылку на почтовый ящик
Set
ns = GetNamespace(
"MAPI"
)
Set
MyInbox = ns.GetDefaultFolder(olFolderInbox)
'Шаг 3: Проверьте наличие сообщений в почтовом ящике; выход из макроса, если их нет
If
MyInbox.Items.Count = 0
Then
MsgBox
"В папке нет сообщений."
Exit
Sub
End
If
'Шаг 4: Создаем каталог для хранения вложений
On
Error
Resume
Next
MkDir "C:\Temp\MyAttachments\"
'Шаг 5: Начинаем цикл по каждому элементу почты
For
Each
MItem
In
MyInbox.Items
'Шаг 6: Сохраняем каждое вложение и переходим к следующему
For
Each
Atmt
In
MItem.Attachments
FileName = "C:\Temp\MyAttachments\" & Atmt.FileName
Atmt.SaveAsFile FileName
Next
Atmt
'Шаг 7: Переходим к следующему элементу почты
Next
MItem
'Шаг 8: Очистка памяти
Set
ns =
Nothing
Set
MyInbox =
Nothing
End
Sub
03 Как работает макрос
1. Шаг 1 объявляет пять переменных. ns — это объект, используемый для предоставления пространства имен MAPI. MyInbox используется для показа целевой почтовой папки. MItem используется для выставления свойств почты. Atmt — это переменная объекта, которая содержит объект Attachment. FileName — это строковая переменная, которое содержит имя вложения.
2. Шаг 2 устанавливает переменную MyInbox так, чтобы она указывала на папку «Входящие» для почтового клиента по умолчанию.
3. Шаг 3 выполняет быструю проверку, чтобы убедиться, что в папке «Входящие» действительно есть сообщения. Если там нет сообщений, макрос завершает процедуру с окном сообщения о том, что Сообщений нет.
4. Шаг 4 создает каталог для хранения найденных вложений. Хотя вы могли бы использовать существующий, лучше создать новый каталог. Обратите внимание, что мы используем On Error Resume Next. Это гарантирует, что код не выдаст ошибку, если каталог, который мы пытаемся создать уже существует.
5. Шаг 5 запускает цикл по каждому почтовому элементу в целевой почтовой папке.
6. Шаг 6 гарантирует, что каждый почтовый элемент, который мы перебираем, проверяется на вложения. Цикл сохраняет каждое вложение, которое мы находим в указанном каталоге, который создали.
7. Шаг 7 возвращается к шагу 5 до тех пор, пока не останется больше почтовых отправлений.
8. Последним шагом мы очищаем память объектов, присвоенных нашим переменным. Это снижает вероятность каких-либо проблем, вызванных объектами, которые могут остаться открытыми в памяти.
04 Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
1. Активируйте редактор Visual Basic, нажав ALT + F11.
2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
3. Выберите Insert➜Module.
4. Введите или вставьте код во вновь созданном модуле.
05 Скачать файл
Автор проекта
Дмитрий Якушев
Привет! Меня зовут Дмитрий. С 2014 года Microsoft Cretified Trainer. Вместе с командой управляем этим сайтом. Наша цель - помочь вам эффективнее работать в Excel.
Изучайте наши статьи с примерами формул, сводных таблиц, условного форматирования, диаграмм и макросов. Записывайтесь на наши курсы или заказывайте обучение в корпоративном формате.
Сайт https://akademia-excel.ru/
ИП Якушев Дмитрий Александрович
ОГРНИП: 314501721200022
ИНН: 501706813807
Образовательная лицензия № Л035-01255-50/01194039
Почта: info@akademia-excel.ru
Телефон для связи: + 7 (958) 697-73-88, + 7 (495) 145-23-86
Регистрация на сайте означает согласие с пользовательским соглашением и на получение рассылки и рекламных материалов.
Политика в отношении обработки и защиты персональных данных.
Банковские реквизиты:
Расчетный счет 40802810500000003597
Банк АО «Тинькофф Банк»
Юридический адрес Банка Москва, 123060,1-й Волоколамский проезд, д. 10, стр. 1
Корр. счет Банка 30101810145250000974
ИНН Банка 7710140679
БИК Банка 044525974
Подписывайтесь на нас в соц.сетях:
Сайт https://akademia-excel.ru/
ИП Якушев Дмитрий Александрович
ОГРНИП: 314501721200022
ИНН: 501706813807
Образовательная лицензия № Л035-01255-50/01194039
Банковские реквизиты:
Расчетный счет 40802810500000003597
Банк АО «Тинькофф Банк»
Юридический адрес Банка Москва, 123060,1-й Волоколамский проезд, д. 10, стр. 1
Корр. счет Банка 30101810145250000974
ИНН Банка 7710140679
БИК Банка 044525974
Регистрация на сайте означает согласие с пользовательским соглашением и на получение рассылки и рекламных материалов.
Политика в отношении обработки и защиты персональных данных.
Почта: info@akademia-excel.ru
Телефон для связи: + 7 (958) 697-73-88, + 7 (495) 145-23-86
Написать в тех.поддержку
Подписывайтесь:
авторизуйтесь