01 Что делает макрос
Если вы отправляете шаблон бюджета для каждого руководителя филиала, чтобы они заполнили и отправили его вам обратно по электронной почте. В этом макросе мы сможем автоматизированно найти все вложения в почтовом ящике и сохранить их в указанную папку.
Поскольку этот код запускается из Excel, необходимо установить ссылку на библиотеку объектов Microsoft Outlook. Мы можем установить ссылку, открыв редактор Visual Basic в Excel и выбрав Tools➜References. Прокрутите вниз, пока не найдете запись Microsoft Outlook XX Object Library, где XX— это ваша версия Outlook. Установите флажок рядом с записью.
02 Код макроса
SubSohranitVseVlojeniya()'Шаг 1: Объявляем переменныеDimnsAsNamespaceDimMyInboxAsMAPIFolderDimMItemAsMailItemDimAtmtAsAttachmentDimFileNameAsString'Шаг 2: Установите ссылку на почтовый ящикSetns = GetNamespace("MAPI")SetMyInbox = ns.GetDefaultFolder(olFolderInbox)'Шаг 3: Проверьте наличие сообщений в почтовом ящике; выход из макроса, если их нетIfMyInbox.Items.Count = 0ThenMsgBox"В папке нет сообщений."ExitSubEndIf'Шаг 4: Создаем каталог для хранения вложенийOnErrorResumeNextMkDir "C:\Temp\MyAttachments\"'Шаг 5: Начинаем цикл по каждому элементу почтыForEachMItemInMyInbox.Items'Шаг 6: Сохраняем каждое вложение и переходим к следующемуForEachAtmtInMItem.AttachmentsFileName = "C:\Temp\MyAttachments\" & Atmt.FileNameAtmt.SaveAsFile FileNameNextAtmt'Шаг 7: Переходим к следующему элементу почтыNextMItem'Шаг 8: Очистка памятиSetns =NothingSetMyInbox =NothingEndSub
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
Написать в тех.поддержку
Подписывайтесь:
авторизуйтесь