Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Outlook - сохранение вложений .xls* из выбранных писем. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Outlook - сохранение вложений .xls* из выбранных писем.
Rioran Дата: Среда, 19.11.2014, 10:37 | Сообщение № 1
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Всем привет и хорошего настроения!

Представляю вниманию почтенной публики код для 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]


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Среда, 19.11.2014, 10:40
 
Ответить
СообщениеВсем привет и хорошего настроения!

Представляю вниманию почтенной публики код для 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]

Автор - Rioran
Дата добавления - 19.11.2014 в 10:37
AlexeyCCC Дата: Пятница, 13.02.2015, 14:43 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Спасибо за макросы, очень помогают!
Подскажите, пожалуйста, что нужно исправить, насколько я понимаю в этой строчке, [vba]
Код
'Сохраняем вложение, если оно является файлом Excel
If strFile Like "*.xls*" Then objAttachments.Item(i).SaveAsFile strFile
Next i
End If
Next
[/vba]
что бы сохранялись все вложения не зависимо от расширения файла?


Сообщение отредактировал Serge_007 - Пятница, 13.02.2015, 22:40
 
Ответить
СообщениеСпасибо за макросы, очень помогают!
Подскажите, пожалуйста, что нужно исправить, насколько я понимаю в этой строчке, [vba]
Код
'Сохраняем вложение, если оно является файлом Excel
If strFile Like "*.xls*" Then objAttachments.Item(i).SaveAsFile strFile
Next i
End If
Next
[/vba]
что бы сохранялись все вложения не зависимо от расширения файла?

Автор - AlexeyCCC
Дата добавления - 13.02.2015 в 14:43
RAN Дата: Суббота, 14.02.2015, 02:13 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Надо все, так и сохраняйте все, а не избранные
[vba]
Код
objAttachments.Item(i).SaveAsFile strFile
[/vba]

Rioran, а зачем новый экземпляр Аутлука, если ты код из Аутлука запускаешь? Или, все же из Excel? На это больше похоже.

[vba]
Код
'Вызов приложения OutLook
Set objOL = CreateObject("Outlook.Application")
[/vba]
Да и убить его, наверное, не помешает
[vba]
Код
objOL.Quit
[/vba]
Или тут нюансы, мне не ведомые? (Аутлука не имею за безнать)


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНадо все, так и сохраняйте все, а не избранные
[vba]
Код
objAttachments.Item(i).SaveAsFile strFile
[/vba]

Rioran, а зачем новый экземпляр Аутлука, если ты код из Аутлука запускаешь? Или, все же из Excel? На это больше похоже.

[vba]
Код
'Вызов приложения OutLook
Set objOL = CreateObject("Outlook.Application")
[/vba]
Да и убить его, наверное, не помешает
[vba]
Код
objOL.Quit
[/vba]
Или тут нюансы, мне не ведомые? (Аутлука не имею за безнать)

Автор - RAN
Дата добавления - 14.02.2015 в 02:13
Rioran Дата: Среда, 18.02.2015, 10:57 | Сообщение № 4
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
RAN, здравствуйте.

зачем новый экземпляр Аутлука

Специфика Outlook. Везде, где мы работаем с приложением без передаваемых в макрос параметров напрямую (которые в скобках после названия) - мы должны создать ссылку на приложение. Убедиться можно ЗДЕСЬ.

Да и убить его

objOL в данном случае является не самостоятельным объектом, а ссылкой на объект. В Outlook принято очищать именно ссылку, что происходит в моем коде следующей строкой:
[vba]
Код
Set objOL = Nothing
[/vba]
А само приложение нам нужно для продолжения работы с почтой.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеRAN, здравствуйте.

зачем новый экземпляр Аутлука

Специфика Outlook. Везде, где мы работаем с приложением без передаваемых в макрос параметров напрямую (которые в скобках после названия) - мы должны создать ссылку на приложение. Убедиться можно ЗДЕСЬ.

Да и убить его

objOL в данном случае является не самостоятельным объектом, а ссылкой на объект. В Outlook принято очищать именно ссылку, что происходит в моем коде следующей строкой:
[vba]
Код
Set objOL = Nothing
[/vba]
А само приложение нам нужно для продолжения работы с почтой.

Автор - Rioran
Дата добавления - 18.02.2015 в 10:57
Dradge Дата: Вторник, 14.04.2015, 14:55 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Подскажите плз, как модифицировать этот код?
Много писем от одного отправитела. Вложение с одним и тем же называнием. Но тема письма всегда разная.
Как можно этот скрипт изменить так что бы он сохранял вложения, переименовывая его по называнию темы письма?

Очень выручите от обезьяньего труда. Спасибо!
 
Ответить
СообщениеПодскажите плз, как модифицировать этот код?
Много писем от одного отправитела. Вложение с одним и тем же называнием. Но тема письма всегда разная.
Как можно этот скрипт изменить так что бы он сохранял вложения, переименовывая его по называнию темы письма?

Очень выручите от обезьяньего труда. Спасибо!

Автор - Dradge
Дата добавления - 14.04.2015 в 14:55
Alex-Andr Дата: Среда, 06.05.2015, 18:25 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Dradge,
после строки "For Each objMsg In objSelection" создайте переменную
[vba]
Код
objSubject = objMsg.TaskSubject
[/vba]
а потом, при сохранении файла вместо строки "strFile = strFolderpath & strFile"
напишите
[vba]
Код
strFile = strFolderpath & objSubject & i & ".xlsx"
[/vba]
 
Ответить
СообщениеDradge,
после строки "For Each objMsg In objSelection" создайте переменную
[vba]
Код
objSubject = objMsg.TaskSubject
[/vba]
а потом, при сохранении файла вместо строки "strFile = strFolderpath & strFile"
напишите
[vba]
Код
strFile = strFolderpath & objSubject & i & ".xlsx"
[/vba]

Автор - Alex-Andr
Дата добавления - 06.05.2015 в 18:25
zebrik Дата: Среда, 24.06.2015, 16:15 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Привет всем!
В теме я самый настоящий нуб. Но очень хочеться автоматизировать процесс.

Вопрос такой: возможно ли сохранять приложеный файл автоматически, когда приходит письмо?

От одного адресата, с одной темой!


Nikita Zebrin,
Sales and supply support specialist
 
Ответить
СообщениеПривет всем!
В теме я самый настоящий нуб. Но очень хочеться автоматизировать процесс.

Вопрос такой: возможно ли сохранять приложеный файл автоматически, когда приходит письмо?

От одного адресата, с одной темой!

Автор - zebrik
Дата добавления - 24.06.2015 в 16:15
Rioran Дата: Среда, 24.06.2015, 18:15 | Сообщение № 8
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
zebrik, здравствуйте.

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

*******

Разве что в код нужно будет внести несколько правок. Например, объект письма добавить как входящий аргумент.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Среда, 24.06.2015, 18:21
 
Ответить
Сообщениеzebrik, здравствуйте.

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

*******

Разве что в код нужно будет внести несколько правок. Например, объект письма добавить как входящий аргумент.

Автор - Rioran
Дата добавления - 24.06.2015 в 18:15
motomax Дата: Пятница, 24.07.2015, 15:15 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Подскажите, как правильно исправить Public Sub Rio_Saves_XlsAttachments_Via_OutLooky()
чтобы в правилах можно было использовать Ваш код как скрипт?
на данный момент, на шаге выбора скрипта,скрипт не отображается

Измените пожалуйста,очень полезный макрос!
[moder]Не нужно цитировать посты целиком!
Удалила.[/moder]


Сообщение отредактировал Manyasha - Пятница, 24.07.2015, 15:30
 
Ответить
СообщениеПодскажите, как правильно исправить Public Sub Rio_Saves_XlsAttachments_Via_OutLooky()
чтобы в правилах можно было использовать Ваш код как скрипт?
на данный момент, на шаге выбора скрипта,скрипт не отображается

Измените пожалуйста,очень полезный макрос!
[moder]Не нужно цитировать посты целиком!
Удалила.[/moder]

Автор - motomax
Дата добавления - 24.07.2015 в 15:15
Gustav Дата: Пятница, 24.07.2015, 18:06 | Сообщение № 10
Группа: Админы
Ранг: Участник клуба
Сообщений: 2808
Репутация: 1184 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Чтобы скрипт показался в списке выбора надо в его определение добавить параметр типа Письмо или Встреча:
[vba]
Код
Public Sub Rio_Saves_XlsAttachments_Via_OutLooky(Item As Outlook.MailItem)
[/vba]
Это только чтобы показался в списке.

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


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеЧтобы скрипт показался в списке выбора надо в его определение добавить параметр типа Письмо или Встреча:
[vba]
Код
Public Sub Rio_Saves_XlsAttachments_Via_OutLooky(Item As Outlook.MailItem)
[/vba]
Это только чтобы показался в списке.

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

Автор - Gustav
Дата добавления - 24.07.2015 в 18:06
Krokys Дата: Четверг, 20.08.2015, 11:46 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

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

Не получается настроить правило для запуска скрипта.
Пишет: скрипт "" не существует или недопустим
Скрипт вставлял в созданный модуль.
VBA не знаю.....
Хотелось бы еще чтоб при повторном запуске файлы с одинаковыми именами не заменял


Сообщение отредактировал Krokys - Четверг, 20.08.2015, 15:22
 
Ответить
Сообщение
Да, с использованием макроса из этой темы Вы можете сохранять приложенный файл от конкретного адресата с конкретной темой. Для этого Вам нужно, встроив данный макрос, настроить правило Outlook, по которому он применяется.

Не получается настроить правило для запуска скрипта.
Пишет: скрипт "" не существует или недопустим
Скрипт вставлял в созданный модуль.
VBA не знаю.....
Хотелось бы еще чтоб при повторном запуске файлы с одинаковыми именами не заменял

Автор - Krokys
Дата добавления - 20.08.2015 в 11:46
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!