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

Вход

Регистрация

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

 

= Мир MS Excel/Регистрация входящих писем Outlook в Excel - Мир MS Excel

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

Excel 2010
Добрый день! Решил написать небольшой макрос по регистрации входящей почты outlook в книге excel. Получилось следующее:
1. в Excel необходимые данные (от кого, кому, тема письма) благополучно переносятся.
2. нумерация писем в excel производится автоматически (от 1-го и далее).
3. если пользователь ввел свой номер (например 420, нумерация продолжается с этого номера).
4. каждый раз при запуске макроса производится оценка уже существующих позиций, и новые значения добавляются в строчки Excel уже после существующих.

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

Мне же нужно чтобы программа работала так: При запуске макроса тот проверяет папку с входящими (в моем случае вместо входящей я выделил папку monitoring) и переносит значения в Excel, при следующем запуске макрос добавляет в Excel только те письма которых еще не было, и так каждый раз. Попробовал entryID, провозился с ним, толком ничего не вышло. Файл прилагаю. Прошу вашей помощи.
К сообщению приложен файл: Formafd12.xls (91.0 Kb)
 
Ответить
СообщениеДобрый день! Решил написать небольшой макрос по регистрации входящей почты outlook в книге excel. Получилось следующее:
1. в Excel необходимые данные (от кого, кому, тема письма) благополучно переносятся.
2. нумерация писем в excel производится автоматически (от 1-го и далее).
3. если пользователь ввел свой номер (например 420, нумерация продолжается с этого номера).
4. каждый раз при запуске макроса производится оценка уже существующих позиций, и новые значения добавляются в строчки Excel уже после существующих.

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

Мне же нужно чтобы программа работала так: При запуске макроса тот проверяет папку с входящими (в моем случае вместо входящей я выделил папку monitoring) и переносит значения в Excel, при следующем запуске макрос добавляет в Excel только те письма которых еще не было, и так каждый раз. Попробовал entryID, провозился с ним, толком ничего не вышло. Файл прилагаю. Прошу вашей помощи.

Автор - sir123
Дата добавления - 07.01.2016 в 10:56
SLAVICK Дата: Четверг, 07.01.2016, 13:56 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Ну я вижу 3и варианта.
1-й - простой перед запуском очищать лист. Тогда все данные будут каждый раз перезаписыватся.
2-й - тоже простой - посмотреть последнюю дату и время добавленных писем, и добавлять только новее письма
3-й - самый сложный создать словарь с уже существующими письмами и добавлять только те которых не было раньше.
во вложении 3-й вариант :D
не тестировал Тест - поскольку не пользуюсь outlook
К сообщению приложен файл: Formafd12.rar (21.4 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеНу я вижу 3и варианта.
1-й - простой перед запуском очищать лист. Тогда все данные будут каждый раз перезаписыватся.
2-й - тоже простой - посмотреть последнюю дату и время добавленных писем, и добавлять только новее письма
3-й - самый сложный создать словарь с уже существующими письмами и добавлять только те которых не было раньше.
во вложении 3-й вариант :D
не тестировал Тест - поскольку не пользуюсь outlook

Автор - SLAVICK
Дата добавления - 07.01.2016 в 13:56
Gustav Дата: Четверг, 07.01.2016, 14:19 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2743
Репутация: 1137 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
я вижу 3и варианта

Даю 4-й. У MailItem есть пустое свойство BillingInformation, предназначенное для чтения/записи произвольного текста. Можно через него прямо в Outlook помечать ранее уже обработанные письма. Т.е. как-то так:
[vba]
Код
myItem.BillingInformation = "сохранено в Excel"
[/vba]
или, более интересно, прямо текущий счетчик макроса записывать:
[vba]
Код
myItem.BillingInformation = fr
[/vba]
Говорю не понаслышке - когда-то сам аналогично использовал это свойство для своих нужд. Правда, с тех пор менял место работы, поэтому код найду вряд ли.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
я вижу 3и варианта

Даю 4-й. У MailItem есть пустое свойство BillingInformation, предназначенное для чтения/записи произвольного текста. Можно через него прямо в Outlook помечать ранее уже обработанные письма. Т.е. как-то так:
[vba]
Код
myItem.BillingInformation = "сохранено в Excel"
[/vba]
или, более интересно, прямо текущий счетчик макроса записывать:
[vba]
Код
myItem.BillingInformation = fr
[/vba]
Говорю не понаслышке - когда-то сам аналогично использовал это свойство для своих нужд. Правда, с тех пор менял место работы, поэтому код найду вряд ли.

Автор - Gustav
Дата добавления - 07.01.2016 в 14:19
sir123 Дата: Пятница, 08.01.2016, 10:42 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо друзья! Вопрос решился. Привожу код. если кому надо:

[vba]
Код
Dim objOutlook As Object, objNamespace As Object
Dim objFolder As Object, objMail As Object
Dim iRow&, iCount&, IdMail$

iRow = Cells(Rows.Count, "A").End(xlUp).Row
iCount = Application.Max(Range("A:A"))

Set objOutlook = CreateObject("Outlook.Application")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objFolder = objNamespace.GetDefaultFolder(6).Folders("Monitoring") '6=olFolderInbox

Application.ScreenUpdating = False

'On Error Resume Next
For Each objMail In objFolder.Items
IdMail = objMail.EntryID
If Application.CountIf(Range("G:G"), IdMail) = 0 Then
iRow = iRow + 1: iCount = iCount + 1
Cells(iRow, 1) = iCount
Cells(iRow, 2) = objMail.SenderName
Cells(iRow, 3) = objMail.SenderEmailAddress
Cells(iRow, 4) = objMail.Subject
Cells(iRow, 5) = objMail.CreationTime
Cells(iRow, 6) = Left(objMail.Body, 100)
Cells(iRow, 7) = IdMail '"'" & IdMail
End If
Next

objOutlook.Quit

Application.ScreenUpdating = True
[/vba]
[moder]Для оформления кодов есть специальная кнопочка #. На первый раз поправил за Вас.[/moder]


Сообщение отредактировал _Boroda_ - Пятница, 08.01.2016, 10:47
 
Ответить
СообщениеСпасибо друзья! Вопрос решился. Привожу код. если кому надо:

[vba]
Код
Dim objOutlook As Object, objNamespace As Object
Dim objFolder As Object, objMail As Object
Dim iRow&, iCount&, IdMail$

iRow = Cells(Rows.Count, "A").End(xlUp).Row
iCount = Application.Max(Range("A:A"))

Set objOutlook = CreateObject("Outlook.Application")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objFolder = objNamespace.GetDefaultFolder(6).Folders("Monitoring") '6=olFolderInbox

Application.ScreenUpdating = False

'On Error Resume Next
For Each objMail In objFolder.Items
IdMail = objMail.EntryID
If Application.CountIf(Range("G:G"), IdMail) = 0 Then
iRow = iRow + 1: iCount = iCount + 1
Cells(iRow, 1) = iCount
Cells(iRow, 2) = objMail.SenderName
Cells(iRow, 3) = objMail.SenderEmailAddress
Cells(iRow, 4) = objMail.Subject
Cells(iRow, 5) = objMail.CreationTime
Cells(iRow, 6) = Left(objMail.Body, 100)
Cells(iRow, 7) = IdMail '"'" & IdMail
End If
Next

objOutlook.Quit

Application.ScreenUpdating = True
[/vba]
[moder]Для оформления кодов есть специальная кнопочка #. На первый раз поправил за Вас.[/moder]

Автор - sir123
Дата добавления - 08.01.2016 в 10:42
Laa911 Дата: Воскресенье, 17.03.2019, 03:16 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 36
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Интесное решение, но почему то не влетает, пишету ошубку (см. скриншот)... что делаю не так?

А из исходящих можно как то тоже вытащить емейлы? Строю карту контактов. и статистику общения с ними...
К сообщению приложен файл: 7821353.jpg (26.6 Kb)


Сообщение отредактировал Laa911 - Воскресенье, 17.03.2019, 03:27
 
Ответить
СообщениеИнтесное решение, но почему то не влетает, пишету ошубку (см. скриншот)... что делаю не так?

А из исходящих можно как то тоже вытащить емейлы? Строю карту контактов. и статистику общения с ними...

Автор - Laa911
Дата добавления - 17.03.2019 в 03:16
_Boroda_ Дата: Воскресенье, 17.03.2019, 14:37 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А у Вас тоже есть папка "Monitoring"?


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА у Вас тоже есть папка "Monitoring"?

Автор - _Boroda_
Дата добавления - 17.03.2019 в 14:37
Laa911 Дата: Воскресенье, 17.03.2019, 22:36 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 36
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Нет, такой папки нет. А ее надо создать?
 
Ответить
СообщениеНет, такой папки нет. А ее надо создать?

Автор - Laa911
Дата добавления - 17.03.2019 в 22:36
Laa911 Дата: Вторник, 19.03.2019, 22:43 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 36
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
А этот тему копия, он тоже отрабатывает?
Банально Нужен реестр всех контактов, что бы динамику потом посмотреть.
 
Ответить
СообщениеА этот тему копия, он тоже отрабатывает?
Банально Нужен реестр всех контактов, что бы динамику потом посмотреть.

Автор - Laa911
Дата добавления - 19.03.2019 в 22:43
_Boroda_ Дата: Вторник, 19.03.2019, 23:00 | Сообщение № 9
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А ее надо создать?

А как Вы думаете? В первом посте написано "в моем случае вместо входящей я выделил папку monitoring". У Вас такой папки нет, а Вы пытаетесь переменной objFolder сказать "Ты будешь папкой monitoring". Конечно она ругается - "Какой Мониторинг, нет у нас такого"


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
А ее надо создать?

А как Вы думаете? В первом посте написано "в моем случае вместо входящей я выделил папку monitoring". У Вас такой папки нет, а Вы пытаетесь переменной objFolder сказать "Ты будешь папкой monitoring". Конечно она ругается - "Какой Мониторинг, нет у нас такого"

Автор - _Boroda_
Дата добавления - 19.03.2019 в 23:00
Laa911 Дата: Четверг, 21.03.2019, 01:51 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 36
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо, я просто не программист, поэтому тухо заходят эти строчки :-(
Спасибо за детальный ответ.

т.е. мне надо укзать Входящие, вместо Мониторинга и она ее отсканирует, и соберет все емейлы?, а как она выввет емейлы, если в переписке человек 10-20?
 
Ответить
СообщениеСпасибо, я просто не программист, поэтому тухо заходят эти строчки :-(
Спасибо за детальный ответ.

т.е. мне надо укзать Входящие, вместо Мониторинга и она ее отсканирует, и соберет все емейлы?, а как она выввет емейлы, если в переписке человек 10-20?

Автор - Laa911
Дата добавления - 21.03.2019 в 01:51
_Boroda_ Дата: Четверг, 21.03.2019, 09:56 | Сообщение № 11
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вы не поверите, но здесь очень мало программистов. Я, например, аналитик-экономист

Да, Входящие вместо Мониторинга. И я не знаю как это у Вас на машине работать будет. Попробуйте, а потом нам расскажите


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВы не поверите, но здесь очень мало программистов. Я, например, аналитик-экономист

Да, Входящие вместо Мониторинга. И я не знаю как это у Вас на машине работать будет. Попробуйте, а потом нам расскажите

Автор - _Boroda_
Дата добавления - 21.03.2019 в 09:56
Laa911 Дата: Пятница, 22.03.2019, 23:03 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 36
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Ни в какую ни хочет видеть папку входящие... может ее надо как то по другому назвать?

И еще вопрос может там не MAPI а что то другое, надо указать? Где это в отлуке можно посмотреть?

не могу понять почему опять на этой строке стоит

 
Ответить
СообщениеНи в какую ни хочет видеть папку входящие... может ее надо как то по другому назвать?

И еще вопрос может там не MAPI а что то другое, надо указать? Где это в отлуке можно посмотреть?

не могу понять почему опять на этой строке стоит


Автор - Laa911
Дата добавления - 22.03.2019 в 23:03
bmv98rus Дата: Пятница, 22.03.2019, 23:45 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
https://docs.microsoft.com/en-us....folders
GetDefaultFolder(6) уже ссылается на Inbox (Входящие)

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


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщениеhttps://docs.microsoft.com/en-us....folders
GetDefaultFolder(6) уже ссылается на Inbox (Входящие)

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

Автор - bmv98rus
Дата добавления - 22.03.2019 в 23:45
Laa911 Дата: Суббота, 23.03.2019, 00:10 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 36
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Ох блин разобрался надо
Visual Basic
1
Set objFolder = objNamespace.GetDefaultFolder(6).Folders("Входящие")'6=olFolderInbox
удалить и скрипт начинает работать..

.Folders("Входящие")

Но текст письма почему то не полностью добавляется...

Вот этот файлик нашел тут Тут видимо оригинал решения
 
Ответить
СообщениеОх блин разобрался надо
Visual Basic
1
Set objFolder = objNamespace.GetDefaultFolder(6).Folders("Входящие")'6=olFolderInbox
удалить и скрипт начинает работать..

.Folders("Входящие")

Но текст письма почему то не полностью добавляется...

Вот этот файлик нашел тут Тут видимо оригинал решения

Автор - Laa911
Дата добавления - 23.03.2019 в 00:10
Laa911 Дата: Суббота, 23.03.2019, 00:12 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 36
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Интересно, а можно прикрутить прогресс бар?
что бы понимать работает или висит -)
 
Ответить
СообщениеИнтересно, а можно прикрутить прогресс бар?
что бы понимать работает или висит -)

Автор - Laa911
Дата добавления - 23.03.2019 в 00:12
Laa911 Дата: Суббота, 23.03.2019, 00:15 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 36
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
А можно ли добавить и ссылку на письмо в аутлуке, что бы из Ехеля его можно было открыть?
Кто знает как добавить?
 
Ответить
СообщениеА можно ли добавить и ссылку на письмо в аутлуке, что бы из Ехеля его можно было открыть?
Кто знает как добавить?

Автор - Laa911
Дата добавления - 23.03.2019 в 00:15
Laa911 Дата: Суббота, 23.03.2019, 00:15 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 36
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
GetDefaultFolder(6) уже ссылается на Inbox (Входящие)

Спасибо, да уже разобрался... я просто полный пень в программировании.
 
Ответить
Сообщение
GetDefaultFolder(6) уже ссылается на Inbox (Входящие)

Спасибо, да уже разобрался... я просто полный пень в программировании.

Автор - Laa911
Дата добавления - 23.03.2019 в 00:15
bmv98rus Дата: Суббота, 23.03.2019, 00:28 | Сообщение № 18
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
а можно прикрутить прогресс бар?
ну сперва посчитать объекты в Inbox и потом выводить процент продвигаясь по списку

А можно ли добавить и ссылку на письмо в аутлуке,
Гиперссылку - скорее нет, а вот если иметь ID сообщения, то открыть уже получится

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


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

А можно ли добавить и ссылку на письмо в аутлуке,
Гиперссылку - скорее нет, а вот если иметь ID сообщения, то открыть уже получится

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

Автор - bmv98rus
Дата добавления - 23.03.2019 в 00:28
Laa911 Дата: Суббота, 23.03.2019, 01:51 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 36
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
А как это все запилить на VB :-(?

И еще хочется что бы был столбец Копия, и туда вставлялись все емейлы из поля копия.

И аналогично по исходящим....

И еще такой вопрос, а не видил ли кто на просторах интернета, скрипт который бы строил и показывал "силу" свзяи с тем или иным контактом, прям очень бы интересно было....
 
Ответить
СообщениеА как это все запилить на VB :-(?

И еще хочется что бы был столбец Копия, и туда вставлялись все емейлы из поля копия.

И аналогично по исходящим....

И еще такой вопрос, а не видил ли кто на просторах интернета, скрипт который бы строил и показывал "силу" свзяи с тем или иным контактом, прям очень бы интересно было....

Автор - Laa911
Дата добавления - 23.03.2019 в 01:51
bmv98rus Дата: Суббота, 23.03.2019, 08:38 | Сообщение № 20
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
ну например [vba]
Код
Cells(iRow, 7) = objMail.CC
[/vba]


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщениену например [vba]
Код
Cells(iRow, 7) = objMail.CC
[/vba]

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

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