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

Вход

Регистрация

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

 

= Мир MS Excel/Сохранение письма из Outlook в папку - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Outlook » Сохранение письма из Outlook в папку (Макросы/Sub)
Сохранение письма из Outlook в папку
duckky Дата: Среда, 21.09.2022, 05:57 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 95
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Добрый день, помогите, пожалуйста допились макрос по сохранению писем из outlook в папку на ПК.
Останавливал макрос, он нормально отображает дату, путь куда надо сохранить и потом даже не ругается, когда доходит до конца, но письмо не сохраняется.
Возможно, я в конце что-то не дописал.
Этот макрос я хотел подцепить к правилу, чтобы оно выполнялось автоматически при получении письма от конкретного адресата в формате ".msg" (вложений в письмах нет).

[vba]
Код
Public Sub saveObjItem(itm As Outlook.MailItem)     ' для сохранения писем

Dim saveFolder As String
Dim sDateMail As String

sDateMail = Format(itm.CreationTime, "dd.mm.yyyy_hh-mm-ss")
'путь к папке сохранения
saveFolder = "D:\Outlook"
For Each objAtt In itm.Attachments
objAtt.SaveAsFile saveFolder & "\" & sDateMail & "_" & objAtt.Subject
Set objAtt = Nothing
Next objAtt

End Sub
[/vba]
 
Ответить
СообщениеДобрый день, помогите, пожалуйста допились макрос по сохранению писем из outlook в папку на ПК.
Останавливал макрос, он нормально отображает дату, путь куда надо сохранить и потом даже не ругается, когда доходит до конца, но письмо не сохраняется.
Возможно, я в конце что-то не дописал.
Этот макрос я хотел подцепить к правилу, чтобы оно выполнялось автоматически при получении письма от конкретного адресата в формате ".msg" (вложений в письмах нет).

[vba]
Код
Public Sub saveObjItem(itm As Outlook.MailItem)     ' для сохранения писем

Dim saveFolder As String
Dim sDateMail As String

sDateMail = Format(itm.CreationTime, "dd.mm.yyyy_hh-mm-ss")
'путь к папке сохранения
saveFolder = "D:\Outlook"
For Each objAtt In itm.Attachments
objAtt.SaveAsFile saveFolder & "\" & sDateMail & "_" & objAtt.Subject
Set objAtt = Nothing
Next objAtt

End Sub
[/vba]

Автор - duckky
Дата добавления - 21.09.2022 в 05:57
Gustav Дата: Среда, 21.09.2022, 06:29 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2701
Репутация: 1123 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
sDateMail = Format(itm.CreationTime, "dd.mm.yyyy_hh-mm-ss")

Точки в имени файла - не гуд. Да и последовательность компонентов даты бы развернуть наоборот: yyyy-mm-dd_hh-mm-ss. Тогда сразу бонус от правильной хронологичёской сортировки по имени появляется.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
sDateMail = Format(itm.CreationTime, "dd.mm.yyyy_hh-mm-ss")

Точки в имени файла - не гуд. Да и последовательность компонентов даты бы развернуть наоборот: yyyy-mm-dd_hh-mm-ss. Тогда сразу бонус от правильной хронологичёской сортировки по имени появляется.

Автор - Gustav
Дата добавления - 21.09.2022 в 06:29
Gustav Дата: Среда, 21.09.2022, 06:40 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2701
Репутация: 1123 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Set objAtt = Nothing

И вот это зачем - в цикле по нему же? Я бы убрал эту строку.

А в Subject уверены, что нет запрещенных символов с точки зрения имени файла? Надо бы предварительно очистку делать от таких символов.

И говорите, что вложений нет в письмах, а цикл-то как раз по вложениям используете. Чтобы само письмо сохранить надо: itm.SaveAs. И без всяких циклов.


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Среда, 21.09.2022, 07:10
 
Ответить
Сообщение
Set objAtt = Nothing

И вот это зачем - в цикле по нему же? Я бы убрал эту строку.

А в Subject уверены, что нет запрещенных символов с точки зрения имени файла? Надо бы предварительно очистку делать от таких символов.

И говорите, что вложений нет в письмах, а цикл-то как раз по вложениям используете. Чтобы само письмо сохранить надо: itm.SaveAs. И без всяких циклов.

Автор - Gustav
Дата добавления - 21.09.2022 в 06:40
duckky Дата: Среда, 21.09.2022, 08:11 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 95
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
И вот это зачем - в цикле по нему же? Я бы убрал эту строку.

Сколько смотрел примеров макросов по сохранению писем/вложений, везде пишут, что в конце надо очищать переменную.

Цитата
А в Subject уверены, что нет запрещенных символов с точки зрения имени файла? Надо бы предварительно очистку делать от таких символов.

Да, там только текст, но добавлю проверку.

Цитата
Чтобы само письмо сохранить надо: itm.SaveAs

Вот тут-то я и проглядел и не мог понять причину. Спасибо
Пока что оставил вот так:
[vba]
Код
Public Sub saveObjItem(itm As Outlook.MailItem)     ' для сохранения писем

Dim saveFolder As String
Dim sDateMail As String

sDateMail = Format(itm.CreationTime, "yyyy.mm.dd_hh-mm-ss")
'путь к папке сохранения
saveFolder = "D:\Outlook"

itm.SaveAs saveFolder & "\" & sDateMail & "_" & itm.Subject & ".msg", olMSG
Set itm = Nothing

End Sub
[/vba]


Сообщение отредактировал duckky - Среда, 21.09.2022, 11:38
 
Ответить
Сообщение
И вот это зачем - в цикле по нему же? Я бы убрал эту строку.

Сколько смотрел примеров макросов по сохранению писем/вложений, везде пишут, что в конце надо очищать переменную.

Цитата
А в Subject уверены, что нет запрещенных символов с точки зрения имени файла? Надо бы предварительно очистку делать от таких символов.

Да, там только текст, но добавлю проверку.

Цитата
Чтобы само письмо сохранить надо: itm.SaveAs

Вот тут-то я и проглядел и не мог понять причину. Спасибо
Пока что оставил вот так:
[vba]
Код
Public Sub saveObjItem(itm As Outlook.MailItem)     ' для сохранения писем

Dim saveFolder As String
Dim sDateMail As String

sDateMail = Format(itm.CreationTime, "yyyy.mm.dd_hh-mm-ss")
'путь к папке сохранения
saveFolder = "D:\Outlook"

itm.SaveAs saveFolder & "\" & sDateMail & "_" & itm.Subject & ".msg", olMSG
Set itm = Nothing

End Sub
[/vba]

Автор - duckky
Дата добавления - 21.09.2022 в 08:11
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Outlook » Сохранение письма из Outlook в папку (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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