Outlook: Автоматическое сохранение вложенных файлов из писем на диск

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

Для этих целей в Outlook можно создать макрос и настроить его запуск в правилах для электронной почты. В правилах же можно указать при получении каких именно писем, от какого отправителя нужно запускать макрос, который сохраняет вложения на диск.

Все эти действия займут не более минуты.

Для создания макроса нажимаем в Outlook сочетание клавиш Alt+F11. Появится окно:

Outlook: макрос для сохранения вложений

  1. В любом месте области 1 (отмечено на изображении выше) кликаем правой кнопкой мышки
  2. В контекстном меню выбираем "Insert" - "Module" (на рисунке отмечено как 2)
  3. Появиться окно (отмечено на рисунке как 3) в которое нужно вставить следующий код:
Public Sub saveAttachtoDisk(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
dateOfMailItem = Format(itm.CreationTime, "yyyy.mm.dd.hhnnss")
saveFolder = "C:\Temp"
For Each objAtt In itm.Attachments
objAtt.SaveAsFile saveFolder & "\" & dateOfMailItem & "_" & objAtt.FileName
Set objAtt = Nothing
Next
End Sub

4. Сохраняем: жмем на иконку дискетки

Макрос создан.

Теперь нужно создать правило в Outlook:

  • В главном меню жмем "Сервис" - "Правила и оповещения..."
  • В появившемся окне "Правила и оповещения" жмем кнопку "Новое"
  • На этапе "Какие сообщения следует отбирать?" указываем критерий письма
  • На этапе "Что следует сделать с сообщением?" выбираем галочкой "Запустить сценарий" и кликаем по надписи "сценарий"
  • В появившемся маленьком окне "Выбор сценария" выбираем сценарий в названии которого содержится "saveAttachtoDisk"
  • Жмем "ок" и "готово"

Вот и все, теперь вложения будут сохраняться в папку "C:\Temp" (в скрипте можно изменить)  с именами вложенных файлов и дописыванием впереди имени даты и времени получения письма.

Если файлы не сохраняются, то, попробуйте изменить настройки безопасности Outlook 2010:

  • Идем вкладку "Файл" - настройки (Outlook Options) - настройки безопасности (Trust Center)
  • Жмем на настройки центра безопасности (Trust Center Settings), после чего жмем на настройки макросов слева (Macro Settings)
  • Выбираем вариант уведомления обо всех макросах (Notifications for all macros) и жмем OK.

Теперь макрос будет запускаться, но перед этим будет появляться сообщение об его запуске.

Понравилось? =) Поделись с друзьями:

Обсуждение записи “Outlook: Автоматическое сохранение вложенных файлов из писем на диск”

  1. Константин says:

    Добрый день Владимир.
    Спасибо за полезную статью!
    Подскажите пожалуйста, при получении письма возможно ли программно создать каталог Имя которого равно «теме» письма и записывать в этот каталог вложения этого письма?
    С VBA не знаком, очень надеюсь на вашу помощь!

    С уважением, Константин

  2. Владимир Демянович (elims.org.ua) says:

    Добрый день, Константин. Уверен что это возможно, но к сожалению у меня нет такого практического опыта, чтобы так сразу подсказать какой именно код прописывать, самому нужно разбираться в синтаксисе.

  3. sergeos says:

    Константин, попробуйте добавить в код Владимира Демяновича такую конструкцию вместо строчки saveFolder = «C:\Temp» вставьте:
    saveFolder = «C:\» & itm.Subject
    If Dir(saveFolder, vbDirectory) = «» Then MkDir (saveFolder)

  4. Дарья says:

    Большое Вам спасибо! Пыталась сохранить все вложения по отдельности, но это отнимало много времени, так как поток информации огромный. А теперь всё просто =)

  5. Наталья says:

    помогите…

    4. Сохраняем: жмем на иконку дискетки

    Макрос создан.
    Теперь нужно создать правило в Outlook:
    •В главном меню жмем «Сервис» — «Правила и оповещения…»
    •В появившемся окне «Правила и оповещения» жмем кнопку «Новое»

    дальше не получается, не могу найти «Выбор сценария» и «saveAttachtoDisk»

    буду благодарна если кто поможет, спасибо!

  6. Регина says:

    Добрый день! Такой вопрос! Напишите,как сделать так,чтобы каждый день создавалась новая папка, например, сегодня папка называется 1, завтра папка называется 2 и т.д.(и в эту папку также сохранялись файлы и желательно чтобы дата и время указывались в конце)
    Заранее большое спасибо!

  7. Aleksandr says:

    Добрый День!
    Спасибо за полезную штуку очень отлично, но подскажите пжл есть такая проблема, мне необходимо чтобы файлы с почты Outlook сохранялись только от одного пользователя, данные письма приходят в одну конкретную папку, подскажите как это прописать

  8. Тимур says:

    Добрый день,
    огромное спасибо.
    и еще прикольно, что можно тему письма сохранять, спасибо еще и sergeos.
    Вы крутые ребята!

  9. Тимур says:

    Добрый день,
    а подскажите, а как сделать чтобы когда создавалась папка, название папки было как тема письма + название файла?

  10. Катя says:

    Макрос работал, пока не перешла на outlook16. Даже системное сообщение не видно.. что то не так. А так нужна эта функция.

  11. Валерий says:

    Спасибо. Работает. И в Outlook2016 тоже.

  12. Тарас says:

    Добрый день!
    Столкнулся с следующей проблемой.
    В мастере правил на этапе «Что делать с сообщением?» отсутствует «Выбор сценария». В чем может быть причина?
    Заранее благодарен на помощь.

  13. Геннадий says:

    Добрый день!
    Воспользовался советом выше. вставил код из комментария:

    «Константин, попробуйте добавить в код Владимира Демяновича такую конструкцию вместо строчки saveFolder = «C:\Temp» вставьте:
    saveFolder = «C:\» & itm.Subject
    If Dir(saveFolder, vbDirectory) = «» Then MkDir (saveFolder)»

    Подскажите, как сделать, чтобы имя папки ограничивалось не всем именем темы сообщения, а только цифрами вначале? Тема моих входящих писем: ЧИСЛА ТЕКСТ, а надо оставить только числа.

  14. Игорь says:

    Здравствуйте!

    Не могу найти скрипт для сохранения вложений в определенную папку из выделенных писем с именем отправителя. С именем файла вложения есть. Есть с датой и прочее…. Но с именем отправителя не нахожу.
    С VBA не приходилось сталкиваться.
    Использую Outlook 2010.
    Помогите, пожалуйста.

  15. Zulu says:

    Добрый день,
    поясните, зачем нужна команда Set objAtt = Nothing в теле цикла, в частности, и в коде, вообще.
    Мы в цикле перебираем все вложения в письме; начали с первого, записали на диск, очистили эту переменную; но затем мы же переходим ко второму (следующему) вложению и в эту переменную автоматически «заносится» второе вложение, и т.д. В чем смысл?
    Если мы хотим очистить эту переменную после работы цикла, то можно вынести эту операцию за цикл (и выполнить 1 раз, а не столько, сколько вложений в письме), но опять же, нафига ее вообще «чистить»? Макрос отработает и пусть в переменной останется какое-то значение. Как только мы начнем обрабатывать следующее письмо, переменная в начале цикла все равно будет инициирована первым вложением этого следующего письма…??
    Я чего-то не понимаю?

Обсудить