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

Вход

Регистрация

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

 

= Мир MS Excel/Извлечь адресатов активного письма - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: _Boroda_, китин  
Извлечь адресатов активного письма
Serge_007 Дата: Вторник, 21.12.2021, 11:37 | Сообщение № 1
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Привет всем, друзья!

Может кто знает, как извлечь адресатов активного письма Outlook для присвоения их переменным в коде VBA?

Суть: Отправляю кодом письма в ответ на определенные. Делаю так - получил письмо, посмотрел вложение Excel, нажал кнопку - отправились письма нужным адресатам с соответствующими листами из Excel-вложения. Это уже есть и хорошо работает. Однако, при автоматической отправке писем, необходимо ещё в копию ставить тех, на чьё письмо отвечаю, т.е. как-то надо извлечь в VBA адресатов полученного исходного письма

Кто знает?

[p.s.]Рабочий макрос - в Excel


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеПривет всем, друзья!

Может кто знает, как извлечь адресатов активного письма Outlook для присвоения их переменным в коде VBA?

Суть: Отправляю кодом письма в ответ на определенные. Делаю так - получил письмо, посмотрел вложение Excel, нажал кнопку - отправились письма нужным адресатам с соответствующими листами из Excel-вложения. Это уже есть и хорошо работает. Однако, при автоматической отправке писем, необходимо ещё в копию ставить тех, на чьё письмо отвечаю, т.е. как-то надо извлечь в VBA адресатов полученного исходного письма

Кто знает?

[p.s.]Рабочий макрос - в Excel

Автор - Serge_007
Дата добавления - 21.12.2021 в 11:37
bmv98rus Дата: Вторник, 21.12.2021, 20:58 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4115
Репутация: 769 ±
Замечаний: 0% ±

Excel 2013/2016
бррр, ну если есть связь с объектом сообщения на которое ответ идет то там есть все адресаты. Сергей, реально не понятна проблема.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщениебррр, ну если есть связь с объектом сообщения на которое ответ идет то там есть все адресаты. Сергей, реально не понятна проблема.

Автор - bmv98rus
Дата добавления - 21.12.2021 в 20:58
Serge_007 Дата: Среда, 22.12.2021, 09:17 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
1. Я получаю письмо от Коллега1, в копии - Коллега2 (в копии может быть разное число Коллег)
2. Открываю вложение из этого письма (Excel-файл)
3. Запускаю макрос (он в Personal)
4. Часть Excel-вложения из этого письма отправляется вложением в новое письмо Коллега3 макросом (e-mail Коллега3 прописан в коде)
5. В новом письме, адресованном Коллега3, в копию надо поставить того, от кого я получил исходное письмо - Коллега1, и кто был в его копии - Коллега2
Как это сделать (п.5)?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение1. Я получаю письмо от Коллега1, в копии - Коллега2 (в копии может быть разное число Коллег)
2. Открываю вложение из этого письма (Excel-файл)
3. Запускаю макрос (он в Personal)
4. Часть Excel-вложения из этого письма отправляется вложением в новое письмо Коллега3 макросом (e-mail Коллега3 прописан в коде)
5. В новом письме, адресованном Коллега3, в копию надо поставить того, от кого я получил исходное письмо - Коллега1, и кто был в его копии - Коллега2
Как это сделать (п.5)?

Автор - Serge_007
Дата добавления - 22.12.2021 в 09:17
msi2102 Дата: Среда, 22.12.2021, 13:52 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация: 129 ±
Замечаний: 0% ±

Excel 2007
Может ТУТ что-нибудь есть
 
Ответить
СообщениеМожет ТУТ что-нибудь есть

Автор - msi2102
Дата добавления - 22.12.2021 в 13:52
Serge_007 Дата: Среда, 22.12.2021, 14:16 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
msi2102, спасибо, но по ссылке обучалка "как отправить письмо", а это у меня
уже есть и хорошо работает
yes


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщениеmsi2102, спасибо, но по ссылке обучалка "как отправить письмо", а это у меня
уже есть и хорошо работает
yes

Автор - Serge_007
Дата добавления - 22.12.2021 в 14:16
msi2102 Дата: Среда, 22.12.2021, 14:35 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация: 129 ±
Замечаний: 0% ±

Excel 2007
Макрос
[vba]
Код
Sub AVPO()
Set myOlApp = CreateObject("Outlook.Application")
Set myNamespace = myOlApp.GetNamespace("MAPI")
Set myRecipient = myNamespace.CreateRecipient("ПОЧТА@terminal.ru")
myRecipient.Resolve
Set avpofolder = myNamespace.GetSharedDefaultFolder(myRecipient, olFolderInbox)
Dim msg As Outlook.MailItem
  If avpofolder.Items.Count > 0 Then
    For Each msg In avpofolder.Items
    Debug.Print "Кому: " & msg.To & " \ Копия: " & msg.CC
        'Сюда можно вписать действия над почтовыми сообщениями
    Next
  End If
End Sub
[/vba]


Сообщение отредактировал msi2102 - Среда, 22.12.2021, 14:49
 
Ответить
СообщениеМакрос
[vba]
Код
Sub AVPO()
Set myOlApp = CreateObject("Outlook.Application")
Set myNamespace = myOlApp.GetNamespace("MAPI")
Set myRecipient = myNamespace.CreateRecipient("ПОЧТА@terminal.ru")
myRecipient.Resolve
Set avpofolder = myNamespace.GetSharedDefaultFolder(myRecipient, olFolderInbox)
Dim msg As Outlook.MailItem
  If avpofolder.Items.Count > 0 Then
    For Each msg In avpofolder.Items
    Debug.Print "Кому: " & msg.To & " \ Копия: " & msg.CC
        'Сюда можно вписать действия над почтовыми сообщениями
    Next
  End If
End Sub
[/vba]

Автор - msi2102
Дата добавления - 22.12.2021 в 14:35
Serge_007 Дата: Среда, 22.12.2021, 14:47 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Ссылки на кибер у нас не приветствуются...

К сообщению приложен файл: 8775603.png (27.1 Kb)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеСсылки на кибер у нас не приветствуются...


Автор - Serge_007
Дата добавления - 22.12.2021 в 14:47
msi2102 Дата: Среда, 22.12.2021, 14:50 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация: 129 ±
Замечаний: 0% ±

Excel 2007
[vba]
Код
Set myRecipient = myNamespace.CreateRecipient("ПОЧТА@terminal.ru")
[/vba]
Нужно заменить на свою почту
 
Ответить
Сообщение[vba]
Код
Set myRecipient = myNamespace.CreateRecipient("ПОЧТА@terminal.ru")
[/vba]
Нужно заменить на свою почту

Автор - msi2102
Дата добавления - 22.12.2021 в 14:50
Serge_007 Дата: Среда, 22.12.2021, 14:54 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Я заменил
Выкладывать рабочую почту сюда нельзя, поэтому сделал монтаж
Ошибка одинаковая, при любой почте в CreateRecipient


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеЯ заменил
Выкладывать рабочую почту сюда нельзя, поэтому сделал монтаж
Ошибка одинаковая, при любой почте в CreateRecipient

Автор - Serge_007
Дата добавления - 22.12.2021 в 14:54
msi2102 Дата: Среда, 22.12.2021, 14:56 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация: 129 ±
Замечаний: 0% ±

Excel 2007
А библиотека объектов Microsoft Outlook подключена?
У меня работает без ошибки
 
Ответить
СообщениеА библиотека объектов Microsoft Outlook подключена?
У меня работает без ошибки

Автор - msi2102
Дата добавления - 22.12.2021 в 14:56
Serge_007 Дата: Среда, 22.12.2021, 15:05 | Сообщение № 11
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
иблиотека объектов Microsoft Outlook подключена?
В ней дело было подключил, заработал макрос, спасибо)

Но
Возвращает имя (не e-mail) одного сотрудника
Откуда? В активном письме этого сотрудника нет


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
иблиотека объектов Microsoft Outlook подключена?
В ней дело было подключил, заработал макрос, спасибо)

Но
Возвращает имя (не e-mail) одного сотрудника
Откуда? В активном письме этого сотрудника нет

Автор - Serge_007
Дата добавления - 22.12.2021 в 15:05
msi2102 Дата: Среда, 22.12.2021, 15:45 | Сообщение № 12
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация: 129 ±
Замечаний: 0% ±

Excel 2007
msg.SendUsingAccount - это адрес отправителя
msg.To - имя Получателя
msg.CC - имя Получателей в копии
К сожалению как получить адреса вместо имен из копии не знаю.
[vba]
Код
Sub AVPO()
Set myOlApp = CreateObject("Outlook.Application")
Set myNamespace = myOlApp.GetNamespace("MAPI")
Set myRecipient = myNamespace.CreateRecipient("ПОЧТА@terminal.ru")
myRecipient.Resolve
Set avpofolder = myNamespace.GetSharedDefaultFolder(myRecipient, olFolderInbox)
Dim msg As Outlook.MailItem
  If avpofolder.Items.Count > 0 Then
    For Each msg In avpofolder.Items
    Debug.Print "Кому: " & msg.To & " \ Копия: " & msg.CC & " \ Адрес отправителя: " & msg.SendUsingAccount & " \ Имя отправителя: " & msg.SenderName '
        'Сюда можно вписать действия над почтовыми сообщениями
    Next
  End If
End Sub
[/vba]


Сообщение отредактировал msi2102 - Среда, 22.12.2021, 15:52
 
Ответить
Сообщениеmsg.SendUsingAccount - это адрес отправителя
msg.To - имя Получателя
msg.CC - имя Получателей в копии
К сожалению как получить адреса вместо имен из копии не знаю.
[vba]
Код
Sub AVPO()
Set myOlApp = CreateObject("Outlook.Application")
Set myNamespace = myOlApp.GetNamespace("MAPI")
Set myRecipient = myNamespace.CreateRecipient("ПОЧТА@terminal.ru")
myRecipient.Resolve
Set avpofolder = myNamespace.GetSharedDefaultFolder(myRecipient, olFolderInbox)
Dim msg As Outlook.MailItem
  If avpofolder.Items.Count > 0 Then
    For Each msg In avpofolder.Items
    Debug.Print "Кому: " & msg.To & " \ Копия: " & msg.CC & " \ Адрес отправителя: " & msg.SendUsingAccount & " \ Имя отправителя: " & msg.SenderName '
        'Сюда можно вписать действия над почтовыми сообщениями
    Next
  End If
End Sub
[/vba]

Автор - msi2102
Дата добавления - 22.12.2021 в 15:45
Serge_007 Дата: Среда, 22.12.2021, 15:59 | Сообщение № 13
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Макрос проходит циклом по папке "Входящие" и извлекает из них имена отправителей и находящихся в копии
Это хорошо, но у меня вопрос-то в другом...

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

[p.s.]
msg.SendUsingAccount - это адрес отправителя
У меня выводит мой адрес, а не отправителя([/p.s.]


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеМакрос проходит циклом по папке "Входящие" и извлекает из них имена отправителей и находящихся в копии
Это хорошо, но у меня вопрос-то в другом...

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

[p.s.]
msg.SendUsingAccount - это адрес отправителя
У меня выводит мой адрес, а не отправителя([/p.s.]

Автор - Serge_007
Дата добавления - 22.12.2021 в 15:59
msi2102 Дата: Среда, 22.12.2021, 16:09 | Сообщение № 14
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация: 129 ±
Замечаний: 0% ±

Excel 2007
У меня выводит мой адрес, а не отправителя(
мой косяк и msg.SenderName тоже Ваше имя.
.CC это поле КОПИЯ, а там пишутся только имена
К сожалению на это мои познания закончились, чем могу :(
 
Ответить
Сообщение
У меня выводит мой адрес, а не отправителя(
мой косяк и msg.SenderName тоже Ваше имя.
.CC это поле КОПИЯ, а там пишутся только имена
К сожалению на это мои познания закончились, чем могу :(

Автор - msi2102
Дата добавления - 22.12.2021 в 16:09
Serge_007 Дата: Среда, 22.12.2021, 16:15 | Сообщение № 15
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
чем могу
Сергей, спасибо! thumb
Я в Outlook не ноль даже, а минус, поэтому Ваш макрос всё-равно был для меня полезен (новые знания)

Осталось всё же решить исходную проблему :o


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
чем могу
Сергей, спасибо! thumb
Я в Outlook не ноль даже, а минус, поэтому Ваш макрос всё-равно был для меня полезен (новые знания)

Осталось всё же решить исходную проблему :o

Автор - Serge_007
Дата добавления - 22.12.2021 в 16:15
krosav4ig Дата: Среда, 22.12.2021, 20:46 | Сообщение № 16
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Добрый вечер.
Если письмо открыто в отдельном окне,
[vba]
Код
    With GetObject(, "Outlook.Application")
        'текущее письмо, открытое в отдельном окне
        Set oMailItm = .ActiveInspector.CurrentItem
        'ответное письмо, созданное действием Ответить всем
        Set oReply = oMailItm.Actions("Ответить всем").Execute
        'отобразить ответное письмо
        oReply.display: AppActivate oReply.GetInspector.Caption
    End With
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеДобрый вечер.
Если письмо открыто в отдельном окне,
[vba]
Код
    With GetObject(, "Outlook.Application")
        'текущее письмо, открытое в отдельном окне
        Set oMailItm = .ActiveInspector.CurrentItem
        'ответное письмо, созданное действием Ответить всем
        Set oReply = oMailItm.Actions("Ответить всем").Execute
        'отобразить ответное письмо
        oReply.display: AppActivate oReply.GetInspector.Caption
    End With
[/vba]

Автор - krosav4ig
Дата добавления - 22.12.2021 в 20:46
msi2102 Дата: Четверг, 23.12.2021, 08:05 | Сообщение № 17
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация: 129 ±
Замечаний: 0% ±

Excel 2007
В новом письме, адресованном Коллега3, в копию надо поставить того, от кого я получил исходное письмо - Коллега1, и кто был в его копии - Коллега2

Ну тогда с кодом Красавчика совсем просто, только при условии
Если письмо открыто в отдельном окне


[vba]
Код
Sub Ответить_всем()
'письмо должно быть открыто в отдельном окне
    With GetObject(, "Outlook.Application")
        'текущее письмо, открытое в отдельном окне
        Set oMailItm = .ActiveInspector.CurrentItem
        'ответное письмо, созданное действием Ответить всем
        Set oReply = oMailItm.Actions("Ответить всем").Execute
        'отобразить ответное письмо
        With oReply
            .Display
            AppActivate .GetInspector.Caption
            .CC = .CC & "; " & .To
            .To = "Коллега3 Иван Иванович"
            .HTMLBody = "ПРОБА на письмо не отвечать" & Chr(13) & .HTMLBody
            .Send
            Debug.Print "Кому: " & .To & " \ Копия: " & .CC
        End With
    End With
End Sub
[/vba]
В начале Вас не понял, думал нужны Адреса, а оказывается нужны Адресаты


Сообщение отредактировал msi2102 - Четверг, 23.12.2021, 08:06
 
Ответить
Сообщение
В новом письме, адресованном Коллега3, в копию надо поставить того, от кого я получил исходное письмо - Коллега1, и кто был в его копии - Коллега2

Ну тогда с кодом Красавчика совсем просто, только при условии
Если письмо открыто в отдельном окне


[vba]
Код
Sub Ответить_всем()
'письмо должно быть открыто в отдельном окне
    With GetObject(, "Outlook.Application")
        'текущее письмо, открытое в отдельном окне
        Set oMailItm = .ActiveInspector.CurrentItem
        'ответное письмо, созданное действием Ответить всем
        Set oReply = oMailItm.Actions("Ответить всем").Execute
        'отобразить ответное письмо
        With oReply
            .Display
            AppActivate .GetInspector.Caption
            .CC = .CC & "; " & .To
            .To = "Коллега3 Иван Иванович"
            .HTMLBody = "ПРОБА на письмо не отвечать" & Chr(13) & .HTMLBody
            .Send
            Debug.Print "Кому: " & .To & " \ Копия: " & .CC
        End With
    End With
End Sub
[/vba]
В начале Вас не понял, думал нужны Адреса, а оказывается нужны Адресаты

Автор - msi2102
Дата добавления - 23.12.2021 в 08:05
Serge_007 Дата: Четверг, 23.12.2021, 09:24 | Сообщение № 18
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Если письмо открыто в отдельном окне
Андрей, спасибо!
Подход верный :)

с кодом Красавчика совсем просто
Сергей, Ваш макрос создает ответное письмо, но это не нужно...

Нужно
извлечь адресатов активного письма Outlook для присвоения их переменным в коде VBA
потому что
...я получил письмо, посмотрел вложение Excel, нажал кнопку - отправились письма нужным адресатам с соответствующими листами из Excel-вложения. Это уже есть и хорошо работает
, но
при автоматической отправке писем, необходимо ещё в копию ставить тех, на чьё письмо отвечаю, т.е. как-то надо извлечь в VBA адресатов полученного исходного письма


Иными словами - мне надо адресатов добавить в уже существующий макрос в Excel
Извлечь их из активного письма и запихать в переменные существующего макроса

Вот его часть, которая отвечает за отправку:
[vba]
Код
With OutlookMail
    .To = Recip
    .CC = "коллеги, от которых получил исходное письмо точка ру"
    .BCC = ""
    .Subject = "Готово" & Wb.Name
    .Body = "Готово " & Sht.Name & ". Прошу закрыть транзакцию"
    .Attachments.Add Wb2.FullName
    .Send
End With
[/vba]
Recip - это адресат-получатель, его e-mail прописан в коде, а вот вместо "коллеги, от которых получил исходное письмо точка ру" должны быть те, кто были в письме, на которое я отвечаю


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Если письмо открыто в отдельном окне
Андрей, спасибо!
Подход верный :)

с кодом Красавчика совсем просто
Сергей, Ваш макрос создает ответное письмо, но это не нужно...

Нужно
извлечь адресатов активного письма Outlook для присвоения их переменным в коде VBA
потому что
...я получил письмо, посмотрел вложение Excel, нажал кнопку - отправились письма нужным адресатам с соответствующими листами из Excel-вложения. Это уже есть и хорошо работает
, но
при автоматической отправке писем, необходимо ещё в копию ставить тех, на чьё письмо отвечаю, т.е. как-то надо извлечь в VBA адресатов полученного исходного письма


Иными словами - мне надо адресатов добавить в уже существующий макрос в Excel
Извлечь их из активного письма и запихать в переменные существующего макроса

Вот его часть, которая отвечает за отправку:
[vba]
Код
With OutlookMail
    .To = Recip
    .CC = "коллеги, от которых получил исходное письмо точка ру"
    .BCC = ""
    .Subject = "Готово" & Wb.Name
    .Body = "Готово " & Sht.Name & ". Прошу закрыть транзакцию"
    .Attachments.Add Wb2.FullName
    .Send
End With
[/vba]
Recip - это адресат-получатель, его e-mail прописан в коде, а вот вместо "коллеги, от которых получил исходное письмо точка ру" должны быть те, кто были в письме, на которое я отвечаю

Автор - Serge_007
Дата добавления - 23.12.2021 в 09:24
bmv98rus Дата: Четверг, 23.12.2021, 12:41 | Сообщение № 19
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4115
Репутация: 769 ±
Замечаний: 0% ±

Excel 2013/2016
а вот вместо "коллеги, от которых получил исходное письмо точка ру" должны быть те, кто были в письме, на которое я отвечаю


oMailItm.sender.address
oMailItm.recipient - коллекция
oMailItm.сс - коллекция.
как последние перебрать не проблема.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщение
а вот вместо "коллеги, от которых получил исходное письмо точка ру" должны быть те, кто были в письме, на которое я отвечаю


oMailItm.sender.address
oMailItm.recipient - коллекция
oMailItm.сс - коллекция.
как последние перебрать не проблема.

Автор - bmv98rus
Дата добавления - 23.12.2021 в 12:41
Serge_007 Дата: Четверг, 23.12.2021, 12:59 | Сообщение № 20
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
как последние перебрать не проблема
Для меня - проблема, иначе я бы топик не создал)
Можешь код написать?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
как последние перебрать не проблема
Для меня - проблема, иначе я бы топик не создал)
Можешь код написать?

Автор - Serge_007
Дата добавления - 23.12.2021 в 12:59
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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