Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/48: Рейтинг темы: голосов - 48, средняя оценка - 4.92
1 / 1 / 0
Регистрация: 15.07.2015
Сообщений: 11

Регистрация входящих писем Outlook в Excel

07.01.2016, 10:36. Показов 10257. Ответов 23
Метки нет (Все метки)

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

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

Мне же нужно чтобы программа работала так: При запуске макроса тот проверяет папку с входящими (в моем случае вместо входящей я выделил папку monitoring) и переносит значения в Excel, при следующем запуске макрос добавляет в Excel только те письма которых еще не было, и так каждый раз. Попробовал entryID, провозился с ним, толком ничего не вышло. Файл прилагаю. Прошу вашей помощи.
Вложения
Тип файла: xls Formafd12.xls (91.0 Кб, 96 просмотров)
1
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.01.2016, 10:36
Ответы с готовыми решениями:

Сохранение входящих писем из Outlook
Прошу помощи у более опытных товарищей. Может кто то решал задачу сохранения писем из определенной папки созданой в Outlook в папку на...

Сохранение и перемещение входящих писем из Outlook
Добрий день! Прошу помочь в написании макроса на VBA для сохранения активного письма в Outlook() в папку на жестком диске(d:temp). а...

Пересылка входящих писем Outlook посредством VBA
Добрый день! Подскажите,пожалуйста: 1.Необходимо чтобы всех входящие письма Outlook отправлялись на эл.почты сотрудников.Список...

23
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
07.01.2016, 19:20
Лучший ответ Сообщение было отмечено ivsir как решение

Решение

ivsir, Один из вариантов определения наличия entryID, можно найти в аттаче.
Вложения
Тип файла: zip Sample_for_Ivsir.zip (7.1 Кб, 165 просмотров)
2
1 / 1 / 0
Регистрация: 15.07.2015
Сообщений: 11
08.01.2016, 10:36  [ТС]
Спасибо за неоценимую помощь. Помогли на все 100 %.
0
18 / 2 / 1
Регистрация: 10.07.2009
Сообщений: 27
09.01.2018, 14:28
Отличный код, спасибо!

Подниму тему:
У меня привязано два аккаунта, как мне просмотреть папку из конкретного аккаунта?

Я могу с него отправить почту используя:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Set sAccount = GetAccountByEmail(senderEmail, appOutlook)
 
...
 
Public Function GetAccountByEmail(ByVal accountEmail As String, ByRef oApp As Object) As Object
 
    Dim oAccount As Object
 
    For Each oAccount In oApp.Session.Accounts
    
        If oAccount.SmtpAddress Like accountEmail Then
        
            Set GetAccountByEmail = oAccount
            Exit Function
        
        End If
    
    Next
 
End Function
Но как мне с этого аккаунта прочитать входящую почту? (он не по умолчанию)
0
0 / 0 / 0
Регистрация: 16.01.2018
Сообщений: 2
23.01.2018, 10:56
Подскажите, пожалуйста, как из примера "pashulka" сделать так, чтобы подсчет был не по папке Входящие, а по другой папке?
0
35 / 32 / 15
Регистрация: 23.12.2014
Сообщений: 97
23.01.2018, 12:41
В строке...
Visual Basic
1
2
3
...
Set objFolder = objNamespace.GetDefaultFolder(6).Folders("Monitoring") '6=olFolderInbox
...
...замените цифру на значение для нужной Вам папки...

в Office97 вроде поддерживались следующие папки:

NameValueDescription
olFolderCalendar9The Calendar folder.
olFolderConflicts19The Conflicts folder (subfolder of Sync Issues folder). Only available for an Exchange account.
olFolderContacts10The Contacts folder.
olFolderDeletedItems3The Deleted Items folder.
olFolderDrafts16The Drafts folder.
olFolderInbox6The Inbox folder.
olFolderJournal11The Journal folder.
olFolderJunk23The Junk E-Mail folder.
olFolderLocalFailures21The Local Failures folder (subfolder of Sync Issues folder). Only available for an Exchange account.
olFolderManagedEmail29The top-level folder in the Managed Folders group. For more information on Managed Folders, see Help in Microsoft Outlook. Only available for an Exchange account.
olFolderNotes12The Notes folder.
olFolderOutbox4The Outbox folder.
olFolderSentMail5The Sent Mail folder.
olFolderServerFailures22The Server Failures folder (subfolder of Sync Issues folder). Only available for an Exchange account.
olFolderSyncIssues20The Sync Issues folder. Only available for an Exchange account.
olFolderTasks13The Tasks folder.
olFolderToDo28The To Do folder.
olPublicFoldersAllPublicFolders18The All Public Folders folder in the Exchange Public Folders store. Only available for an Exchange account.
olFolderRssFeeds25The RSS Feeds folder.

Добавлено через 6 минут
to romanss,

и, да, Office2007 ...
1
0 / 0 / 0
Регистрация: 16.01.2018
Сообщений: 2
23.01.2018, 17:05
Спасибо. Разобрался.
0
0 / 0 / 0
Регистрация: 02.02.2014
Сообщений: 17
22.03.2019, 23:28
не могу разобраться...

Вылетает вот такая ошибка (Офис 2016) может в нем уже какие-то другие объекты?





Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
[VB]
Sub my_macros()
'
' my_macros Макрос
'
 
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("Входящие") '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
 
 
'
End Sub
[/VB]

Добавлено через 2 минуты
0
0 / 0 / 0
Регистрация: 02.02.2014
Сообщений: 17
22.03.2019, 23:29
Вот такая ошибка, что то не могу понять как тут картинки вставлять ж-(
Миниатюры
Регистрация входящих писем Outlook в Excel  
0
0 / 0 / 0
Регистрация: 02.02.2014
Сообщений: 17
23.03.2019, 00:08
Ох блин разобрался надо
Visual Basic
1
Set objFolder = objNamespace.GetDefaultFolder(6).Folders("Входящие")'6=olFolderInbox
удалить и скрипт начинает работать..

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

но вместо писем влетают какие то учтетная запись пользовалея и службная инфа..
реестра писем нет ;-((((

Добавлено через 4 минуты
Скачал файлик выше и запустил в нем, кажется заработало.
подскажите как еще в добавить поле, что бы в него добавлялись все емыйлы из поля Копия?

Добавлено через 4 минуты
Блин текст письма не полностью закачивается...

а можно как то ссылочку на письмо в оутлуке сделать, что бы из Екселя, можно было перейти сразу в нужно письмо оутука?
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
23.03.2019, 06:58
Цитата Сообщение от Laa911 Посмотреть сообщение
Блин текст письма не полностью закачивается...
Если Вы скачали мой пример, то как прошли мимо строки Cells(iRow, 6) = Left(objMail.Body, 100) , где objMail.Body это полный текст письма.
0
0 / 0 / 0
Регистрация: 02.02.2014
Сообщений: 17
31.03.2019, 17:36
не знаю, я не рпограммист -(
но боди в ячейке почему то обрезанное
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
31.03.2019, 17:45
Без обид, но не нужно быть программистом, чтобы понять, что обрезание происходит в вышеуказанной строке. И текст в ячейке - не может содержать больше 32767 символов, а текст письма - может, так что, по любому, обрезание необходимо.
0
0 / 0 / 0
Регистрация: 02.02.2014
Сообщений: 17
31.03.2019, 18:03
Какие уж тут обиды, если в програмиировании я не бум бум ж-(

Спасибо за уточнение, теперь понял ж-)

А можно в код дописать что бы из поля ТО и Копия, все емейлы добавлялись,
И еще хотелось бы иметь такую же вкадку с аналитикой по исходящим...

Или если это не сложно, что бы по исходящим было бы на этой же странице, и в отделной колоночке стоял бы признак
Входящее/исходящее

насколько сложно докукрутить этот скрипт? ( а ссылочку на письмо можно как то прикрутить) чтобы можно было ее клинкнуть и открывалось бы это письмо в оутлуке? или это уже фантастика?
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
31.03.2019, 18:52
Пробуйте. Правда, способа как создать гиперссылку на отдельно взятое письмо, я не нашёл.
Вложения
Тип файла: zip modOutlookToExcel.zip (720 байт, 43 просмотров)
1
0 / 0 / 0
Регистрация: 02.02.2014
Сообщений: 17
01.04.2019, 21:57
Спасибо, но кривые ручки не могут его запусить :-(
Первая строчка почему то красная и ругается зараза....

И еще вопрос, а если я перенес всю почту в локальный PST как мне на него направить этот макрос?

Спасибо, за посильную помощь, для бестолкового юзера ...:-)
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
01.04.2019, 22:08
Это стандартный модуль и его нужно просто импортировать, если же копировать код, то, разумеется, без первой строки.

Без понятия, ибо Outlook это не моё.
1
0 / 0 / 0
Регистрация: 02.02.2014
Сообщений: 17
01.04.2019, 23:10
Пишет Compil Error: Syntax Error
Можно Вас попросить его прямо в Excel встроить?
Кривые ручки не могут его запустить ;-(

Добавлено через 3 минуты
Спасибо за подскажку с импортом! Получилось, но при работе Ексель чист как слеЗа :-(

Добавлено через 5 минут
зараз теперь ругаестя на objMail.To

Rut-Time error 438
пишет object doesen't support this property or method

Можно его как то к кнопочке в Экселе прикрутить, не хочет запускаться ирод....

Добавлено через 23 минуты
Need Help ;-(

Да, надо както к письмам в оффлайн PST надо как то по другому указывать :-( блин... ужос, как вы в этой чертовщине разбираетеьс :-)

Добавлено через 9 минут
Добавил макрос, в файлик выше... ура начал работать но

1. не парсит почту которая хранится локально в PST
2. Эти сроки не проходят, прихоится их комментировать ;-(

Cells(iRow, "D") = objMail.To
Cells(iRow, "E") = objMail.CC

Ругаются на них... не понятно что ними не так -(

Добавлено через 20 минут
Cells(iRow, "D") = objMail.To
Cells(iRow, "E") = objMail.CC


Как их починить, что бы макрос заработал ? ;-((( без вашей помощи не обойтись -(
0
0 / 0 / 0
Регистрация: 02.02.2014
Сообщений: 17
02.04.2019, 11:07
Цитата Сообщение от Laa911 Посмотреть сообщение
Cells(iRow, "D") = objMail.To
Cells(iRow, "E") = objMail.CC
Ребята, как эти поля зацепить? Там видимо, как то по другому надо их выгружать ;-(
Кто то знает волшебные ссрочки кода что бы они появились?

Добавлено через 3 минуты
Цитата Сообщение от pashulka Посмотреть сообщение
Без понятия, ибо Outlook это не моё.
Вернул опять письма в папочки, но Excel висит уже минут 10 и не понятно висит он или что то делает.
На 200 строчке упер через Out of Memmory пришлось урезать размер выгружаемого тела письма до 1000

Тут вот нашел, как видимо вытащить поля, но мне это ни о чем не говорит -(

Как выгрузить электронные адреса получателей?

Уважаемые коллеги!
На Планете Excel подсказали решение: DEL
Нужно использовать атрибут Recipients объекта Сообщение.


что это за волшебные слова, и как их вклеить в этот модуль, что бы заработало ж-(

Очень надеюсь на Вашу вклейку...

Добавлено через 13 минут
Выгружает 1596 строк, и умирает на строке

Cells(iRow, "B") = objMail.SenderName

с Ошибкой

Run-time error 438 Object doesn't support this proprty or metod

Как же его починить/допилить ж-(

Добавлено через 10 минут
Всего в папках 1628 писем
Входящие 1416
Исходящие 212

почему то умирает за 32 письма ... моет еще что то надо добавить.... что бы заработало ж-(
0
0 / 0 / 0
Регистрация: 18.07.2020
Сообщений: 2
23.07.2020, 22:22
позвольте поднять тему.
код из сообщения №2 у меня работает (если создаю папку во Входящих). Кстати работает только он, а другие аналоги не хотят.
вопрос заключается в следующем: как заставить этот макрос читать письма из ппки, которая в корне аккаунта (один уровень с Входящими, Отправленными и т.д.). ПРобовал исползовать (29), а дальше имя папки, но облом.
Code
1
objNamespace.GetDefaultFolder(29).Folders("Визирование")
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.07.2020, 22:22
Помогаю со студенческими работами здесь

Макрос для Outlook: автоматическая проверка всех входящих писем
Друзья, простите что обращаюсь, но уже давно пытаюсь и никак не могу написать макрос для outlook. Нужно чтобы он проверял автоматически все...

Макрос для Outlook: автоматическая проверка входящих писем и сохранение аттачментов
Доброго времени суток,друзья! Я не являюсь специалистом в области макросов, но возникла необходимость смены почтовика и допиливания...

Отправка писем в excel через outlook
Добрый день, форумчане! Есть вопрос по написанию макроса. У меня есть макрос для отправки писем из excel, но в теле письма указывается...

Отправка писем из Excel через Outlook
Как задать такой цикл, в котором бы автоматом выбирались только е-мэйлы по столбцу D, притом чтобы он открывал на каждый найденный е-мэйл...

Отправка писем из Excel-я через Outlook
Всем доброго времени суток. Очень большая просьба помочь доделать. Есть макрос для отправки писем из икселя через оутлук с вложением...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru