Представляю вниманию почтенной публики код для OutLook, который копирует вложения Excel из выбранных вручную писем в заранее подготовленную папку. Подчёркиваю - код встраивается именно в OutLook. Удобно сочетается с выведением кнопки макроса на панель быстрого доступа.
Один вопрос на форуме вдохновил на расширение границ собственных возможностей. В интернете нашёл любопытный образец, который решил разобрать на атомы. Кое-что почистил, выбросил лишнее, заточил на связь с Экселем. Подробные комментарии от меня прилагаются.
Вместо моего "C:\Users\rvoronov\Desktop\Тесты\" впишите адрес нужной именно Вам папки. Следите, чтобы на конце адреса был разделитель "\".
[vba]
Код
Public Sub Rio_Saves_XlsAttachments_Via_OutLooky()
'Author: Roman "Rioran" Voronov 'Date: the 19-th of November, 2014 'Feedback: voronov_rv@mail.ru
'Refined code for saving Excel attachments from OutLook selected messages. 'Thanks Stuart for providing code basis (http://stackoverflow.com/users/267830/stuart), primary source: 'http://stackoverflow.com/questions/15531093/outlook-vba-macro-to-save-attachments-to-a-folder-and-rename-them
'Данный код позволяет сохранять вложения Excel из писем, которые были выбраны (подсвечены синим) 'в основном почтовом окне программы Microsoft Office OutLook в заранее выбранную папку
'Объявляем переменные Dim objOL As Outlook.Application 'Для обращений к приложению OutLook Dim objMsg As Outlook.MailItem 'Для обращений к конкретным письмам Dim objAttachments As Outlook.Attachments 'Для работы с коллекцией вложений письма Dim objSelection As Outlook.Selection 'Для работы с выбранными в окне сообщениями Dim i As Long 'Счётчик для перебора вложений Dim lngCount As Long 'Для подсчёта вложений Dim strFile As String 'Полное имя файла Dim strFolderpath As String 'Папка для сохранения вложений
'Назначаем путь, куда будем сохранять файлы strFolderpath = "C:\Users\rvoronov\Desktop\Тесты\" 'При ошибке прём как танки дальше On Error Resume Next 'Вызов приложения OutLook Set objOL = CreateObject("Outlook.Application") 'Получение коллекции выбранных объектов Set objSelection = objOL.ActiveExplorer.Selection
'Проверяем каждое выбранное письмо на наличие вложений. 'Если есть - сохраняем вложения по пути strFolderPath For Each objMsg In objSelection 'Превращаем переменную в коллекцию вложений Set objAttachments = objMsg.Attachments 'Подсчитываем вложения lngCount = objAttachments.Count 'Если вложения есть, то... If lngCount > 0 Then 'Перебираем вложения For i = 1 To lngCount 'Получаем имя конкретного вложения strFile = objAttachments.Item(i).FileName 'Получаем полное имя для сохраняемого файла strFile = strFolderpath & strFile 'Сохраняем вложение, если оно является файлом Excel If strFile Like "*.xls*" Then objAttachments.Item(i).SaveAsFile strFile Next i End If Next
'Освобождаем занятую память Set objAttachments = Nothing Set objMsg = Nothing Set objSelection = Nothing Set objOL = Nothing
End Sub
[/vba]
Всем привет и хорошего настроения!
Представляю вниманию почтенной публики код для OutLook, который копирует вложения Excel из выбранных вручную писем в заранее подготовленную папку. Подчёркиваю - код встраивается именно в OutLook. Удобно сочетается с выведением кнопки макроса на панель быстрого доступа.
Один вопрос на форуме вдохновил на расширение границ собственных возможностей. В интернете нашёл любопытный образец, который решил разобрать на атомы. Кое-что почистил, выбросил лишнее, заточил на связь с Экселем. Подробные комментарии от меня прилагаются.
Вместо моего "C:\Users\rvoronov\Desktop\Тесты\" впишите адрес нужной именно Вам папки. Следите, чтобы на конце адреса был разделитель "\".
[vba]
Код
Public Sub Rio_Saves_XlsAttachments_Via_OutLooky()
'Author: Roman "Rioran" Voronov 'Date: the 19-th of November, 2014 'Feedback: voronov_rv@mail.ru
'Refined code for saving Excel attachments from OutLook selected messages. 'Thanks Stuart for providing code basis (http://stackoverflow.com/users/267830/stuart), primary source: 'http://stackoverflow.com/questions/15531093/outlook-vba-macro-to-save-attachments-to-a-folder-and-rename-them
'Данный код позволяет сохранять вложения Excel из писем, которые были выбраны (подсвечены синим) 'в основном почтовом окне программы Microsoft Office OutLook в заранее выбранную папку
'Объявляем переменные Dim objOL As Outlook.Application 'Для обращений к приложению OutLook Dim objMsg As Outlook.MailItem 'Для обращений к конкретным письмам Dim objAttachments As Outlook.Attachments 'Для работы с коллекцией вложений письма Dim objSelection As Outlook.Selection 'Для работы с выбранными в окне сообщениями Dim i As Long 'Счётчик для перебора вложений Dim lngCount As Long 'Для подсчёта вложений Dim strFile As String 'Полное имя файла Dim strFolderpath As String 'Папка для сохранения вложений
'Назначаем путь, куда будем сохранять файлы strFolderpath = "C:\Users\rvoronov\Desktop\Тесты\" 'При ошибке прём как танки дальше On Error Resume Next 'Вызов приложения OutLook Set objOL = CreateObject("Outlook.Application") 'Получение коллекции выбранных объектов Set objSelection = objOL.ActiveExplorer.Selection
'Проверяем каждое выбранное письмо на наличие вложений. 'Если есть - сохраняем вложения по пути strFolderPath For Each objMsg In objSelection 'Превращаем переменную в коллекцию вложений Set objAttachments = objMsg.Attachments 'Подсчитываем вложения lngCount = objAttachments.Count 'Если вложения есть, то... If lngCount > 0 Then 'Перебираем вложения For i = 1 To lngCount 'Получаем имя конкретного вложения strFile = objAttachments.Item(i).FileName 'Получаем полное имя для сохраняемого файла strFile = strFolderpath & strFile 'Сохраняем вложение, если оно является файлом Excel If strFile Like "*.xls*" Then objAttachments.Item(i).SaveAsFile strFile Next i End If Next
'Освобождаем занятую память Set objAttachments = Nothing Set objMsg = Nothing Set objSelection = Nothing Set objOL = Nothing
Специфика Outlook. Везде, где мы работаем с приложением без передаваемых в макрос параметров напрямую (которые в скобках после названия) - мы должны создать ссылку на приложение. Убедиться можно ЗДЕСЬ.
objOL в данном случае является не самостоятельным объектом, а ссылкой на объект. В Outlook принято очищать именно ссылку, что происходит в моем коде следующей строкой: [vba]
Код
Set objOL = Nothing
[/vba] А само приложение нам нужно для продолжения работы с почтой.
Специфика Outlook. Везде, где мы работаем с приложением без передаваемых в макрос параметров напрямую (которые в скобках после названия) - мы должны создать ссылку на приложение. Убедиться можно ЗДЕСЬ.
objOL в данном случае является не самостоятельным объектом, а ссылкой на объект. В Outlook принято очищать именно ссылку, что происходит в моем коде следующей строкой: [vba]
Код
Set objOL = Nothing
[/vba] А само приложение нам нужно для продолжения работы с почтой.Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
Подскажите плз, как модифицировать этот код? Много писем от одного отправитела. Вложение с одним и тем же называнием. Но тема письма всегда разная. Как можно этот скрипт изменить так что бы он сохранял вложения, переименовывая его по называнию темы письма?
Очень выручите от обезьяньего труда. Спасибо!
Подскажите плз, как модифицировать этот код? Много писем от одного отправитела. Вложение с одним и тем же называнием. Но тема письма всегда разная. Как можно этот скрипт изменить так что бы он сохранял вложения, переименовывая его по называнию темы письма?
Очень выручите от обезьяньего труда. Спасибо!Dradge
Да, с использованием макроса из этой темы Вы можете сохранять приложенный файл от конкретного адресата с конкретной темой. Для этого Вам нужно, встроив данный макрос, настроить правило Outlook, по которому он применяется.
*******
Разве что в код нужно будет внести несколько правок. Например, объект письма добавить как входящий аргумент.
zebrik, здравствуйте.
Да, с использованием макроса из этой темы Вы можете сохранять приложенный файл от конкретного адресата с конкретной темой. Для этого Вам нужно, встроив данный макрос, настроить правило Outlook, по которому он применяется.
*******
Разве что в код нужно будет внести несколько правок. Например, объект письма добавить как входящий аргумент.Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
Сообщение отредактировал Rioran - Среда, 24.06.2015, 18:21
Подскажите, как правильно исправить Public Sub Rio_Saves_XlsAttachments_Via_OutLooky() чтобы в правилах можно было использовать Ваш код как скрипт? на данный момент, на шаге выбора скрипта,скрипт не отображается
Измените пожалуйста,очень полезный макрос! [moder]Не нужно цитировать посты целиком! Удалила.[/moder]
Подскажите, как правильно исправить Public Sub Rio_Saves_XlsAttachments_Via_OutLooky() чтобы в правилах можно было использовать Ваш код как скрипт? на данный момент, на шаге выбора скрипта,скрипт не отображается
Измените пожалуйста,очень полезный макрос! [moder]Не нужно цитировать посты целиком! Удалила.[/moder]motomax
Сообщение отредактировал Manyasha - Пятница, 24.07.2015, 15:30
Чтобы скрипт показался в списке выбора надо в его определение добавить параметр типа Письмо или Встреча: [vba]
Код
Public Sub Rio_Saves_XlsAttachments_Via_OutLooky(Item As Outlook.MailItem)
[/vba] Это только чтобы показался в списке.
Ну а дальше надо немножко допилить, точнее, "перепилить" макрос, удалив из него цикл и назначив все действия одному письму, которое теперь будет передаваться параметром.
Чтобы скрипт показался в списке выбора надо в его определение добавить параметр типа Письмо или Встреча: [vba]
Код
Public Sub Rio_Saves_XlsAttachments_Via_OutLooky(Item As Outlook.MailItem)
[/vba] Это только чтобы показался в списке.
Ну а дальше надо немножко допилить, точнее, "перепилить" макрос, удалив из него цикл и назначив все действия одному письму, которое теперь будет передаваться параметром.Gustav
Да, с использованием макроса из этой темы Вы можете сохранять приложенный файл от конкретного адресата с конкретной темой. Для этого Вам нужно, встроив данный макрос, настроить правило Outlook, по которому он применяется.
Не получается настроить правило для запуска скрипта. Пишет: скрипт "" не существует или недопустим Скрипт вставлял в созданный модуль. VBA не знаю..... Хотелось бы еще чтоб при повторном запуске файлы с одинаковыми именами не заменял
Да, с использованием макроса из этой темы Вы можете сохранять приложенный файл от конкретного адресата с конкретной темой. Для этого Вам нужно, встроив данный макрос, настроить правило Outlook, по которому он применяется.
Не получается настроить правило для запуска скрипта. Пишет: скрипт "" не существует или недопустим Скрипт вставлял в созданный модуль. VBA не знаю..... Хотелось бы еще чтоб при повторном запуске файлы с одинаковыми именами не заменялKrokys
Сообщение отредактировал Krokys - Четверг, 20.08.2015, 15:22