Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
tdots
6 лет назад

Автосохранение вложений по условию в Outlook

 При работе с электронной почтой довольно часто приходится выполнять операцию сохранения вложений из писем определенных адресатов на определенные темы. При получении такого письма мы открываем его и по очереди сохраняем все вложения в нужную папку (например, руководитель отдела может таким образом обрабатывать полученные регулярные отчеты подчиненных и т.д.). 

Такая операция мало того, что нудная, так еще и постоянно вылетает из головы. Желательно бы её автоматизировать. Чтобы при получении письма, отвечающего заданным условиям, сохранение всех вложений на диск в нужную папку происходило без участия пользователя. Реализовать это можно с помощью связки "Правило + Макрос"

 

Создаем макрос

Начнем с создания макроса, который будет сохранять вложения в указанную папку. Для начала отобразим на ленте вкладку "Разработчик". Файл - Параметры - Настройка ленты - включаем галочку напротив вкладки.  

 Далее нам нужно открыть редактор Visual Basic. На ленте находим добавленную только что вкладку и жмем команду "Visual Basic". Или используем сочетание горячих клавиш Alt+F11.  

 Перед Вами появится окно редактора VBA (так называемый, Visual Basic Editor или VBE). Макросы хранятся в модулях, соответственно перед созданием макроса нужно создать модуль. Для этого в открывшемся окне кликните в левой части (там, где находится "Проект1" или "Project1") правой кнопкой мыши, выберите команду Insert - Module. Если вы не видите часть редактора, содержащую "Проект1" - нажмите Ctrl+R

 После этих действий будет создана папка с модулями, а в ней появится Module1. Кликните по нему дважды и справа откроется большое окно ввода кода для модуля.  

 Вставьте в это окно следующий код:

Public Sub saveAtt (itm As Outlook.MailItem)

Dim objAtt As Outlook.Attachment  'переменная для работы с вложениями
Dim saveFolder As String  'переменная для пути к папке сохранения
Dim sDateMail as string  'переманная для даты письма

   
'сохраняем в правильном формате время создания сообщения
sDateMail = Format(itm.CreationTime, "hh-mm-ss_dd.mm.yyyy")

'задаем путь к папке сохранения
saveFolder = "C:\Users\Igor Solobay\Desktop\"

For each objAtt in itm.Attachments
'сохраняем вложение в папку под именем: дата письма + название файла вложения
objAtt.SaveAsFile saveFolder & "\" & sDateMail & "_" & objAtt.FileName
'очищаем переменную с вложением
Set objAtt = Nothing
Next objAtt

End Sub

 Этот код в момент срабатывания на каком то сообщении будет перебирать все его вложения и сохранять их в указанную папку (строка saveFolder) с именем, которое будет состоять из даты и времени создания письма и названия вложения. После вставки кода нажмите Ctrl+S (или иконку дискеты в левом верхнем углу). 

 

Создаем правило

Перейдем к созданию правила, которое будет запускать код на определенные письма. В нашем примере это будет правило, которое сработает при получении писем с определенной темой. Главная - Правила - Управление правилами и оповещениями 

 В появившемся окне нажмите кнопку "Новое...", чтобы перейти к созданию нового правила с нуля. 

 В появившемся окне нажмите "Далее". На первом шаге мастера правил укажите,  для каких писем правило должно срабатывать. В нашем примере это будут письма, в теме которых содержится фраза "Ежедневная рассылка отчета". Поставьте галочку напротив пункта "Содержащие <текст> в поле тема", а затем в нижней части окна кликните на гиперссылке со словом "текст" и введите искомую фразу. В списке условий отбора также можете установить галочку на пункт "Содержащие вложения", так как письма без вложений нас не интересуют (сохранять в них нечего).  

 Нажмите кнопку "Далее". На следующем шаге нужно снять все лишние галочки, а поставить одну - напротив пункта "Запустить скрипт", а в нижней части экрана, нажав на гиперссылку, выбрать наш макрос. 

Если у вас нет пункта "Запустить скрипт", то возможно дело в обновлении Office (актуально для Office 2013 и Office 2016). Чтобы исправить это, нужно в реестре в ветке HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Security (для 2016) или в ветке HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Security (для 2013) создать строковый параметр DWORD с именем EnableUnsafeClientMailRules и значением, равным единице. После перезапуска Outlook пункт должен появиться в списке.

 Нажмите "Далее", укажите исключения, если нужно, затем еще раз "Далее", укажите имя правила, поставьте галочку напротив "Включить правило" и жмите "Готово" 

 Осталось только разрешить выполнение макросов, чтобы Outlook сумел запустить его, когда сработает правило. Идем на вкладку "Разработчик" - "Безопасность макросов" и на вкладке "Параметры макросов" задаём нужную настройку.  

Готово! 

Теперь при получении письма с темой, содержащей фразу "Ежедневная рассылка отчета", программа сама сохранит все вложения из этого письма на рабочий стол (Вы, разумеется, можете указать любую другую папку). 

Обратите внимание, что скрипт сработает только при запущенном Outlook!

Поддержать наш проект и его дальнейшее развитие можно вот здесь.

Ваши вопросы по статье можете задавать через нашего бота обратной связи в Telegram: @KillOfBot

С уважением, команда tDots.ru 

96
0.000 GOLOS
На Golos с December 2017
Комментарии (0)
Сортировать по:
Сначала старые