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

Вход

Регистрация

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

 

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

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Регистрация входящих писем 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(91Kb)
 
Ответить
СообщениеДобрый день! Решил написать небольшой макрос по регистрации входящей почты 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
Группа: Модераторы
Ранг: Старожил
Сообщений: 2003
Репутация: 673 ±
Замечаний: 0% ±

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


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

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

начинал с Excel 4.0...
я вижу 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
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Регистрация входящих писем Outlook в Excel (Макросы/Sub)
Страница 1 из 11
Поиск:

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