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

Макрос Outlook для прочтения и сохранения писем

02.07.2013, 13:37. Показов 17805. Ответов 54
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста!

У меня в Outlook был макрос, который прочитывал все письма входящие и сохранял их в определенную папку. Потом произошел какой то сбой и макрос слетел. Мне написали новый, но он не работает до конца, т.е. приходит письмо, он его ни читает, ни сохраняет, когда приходит следующее письмо, то он первое обрабатывает, а на втором опять же тормозит, т.е. получается, что он через один работает. Местные программист борются с этим, но толку ноль, я сама не программер, но просто мне самой это очень надо, может мне кто нить поможет(((
Вот сам макрос:

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
Sub SaveAattachments(myItem As Outlook.MailItem)
 
'Sub SaveAattachments()
 
Dim oNameSpace As NameSpace
Dim oFolder As MAPIFolder
'Dim MI As MailItem
Dim MI
Dim DestFolder As String
Dim i As Integer
 
    Set oNameSpace = ThisOutlookSession.Session
    Set oFolder = oNameSpace.GetDefaultFolder(olFolderInbox)
    
    If Len(Dir("L:\Карты\CardPL\Files\In\")) = 0 Then
 
        DestFolder = "C:\Card_In\"
    Else
        DestFolder = "L:\Карты\CardPL\Files\In\"
    End If
        
    For Each MI In oFolder.Items
        If MI.UnRead = True Then
        If MI.Attachments.Count > 0 Then
            For i = 1 To MI.Attachments.Count
                MI.Attachments.Item(i).SaveAsFile DestFolder & MI.Attachments.Item(i).DisplayName
            Next
        End If
        MI.UnRead = False
        End If
    Next
End Sub

Единственное, что меня в нем смущает DestFolder = "C:\Card_In" ...я опять же говорю, что я не специалист, но на диске С у меня нет папки Card_In, может это как то связано....
Очень надеюсь на помощь!!!!!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.07.2013, 13:37
Ответы с готовыми решениями:

Простой скрипт для сохранения писем Outlook
Здравствуйте. Прочитал все подобные темы на форуме и ничего не нашел. Нужен самый простой скрипт, который берет письма из определенной...

Макрос для отправки писем через outlook
Необходимо создать макрос для отправки писем через outlook листа 3, с ориентацией по названию фирмы и емэйлом

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

54
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
02.07.2013, 21:53
Здравствуйте! Носился по глобусу по своим делам, попалось на глаза по Вашему вопросу:
http://stackoverflow.com/quest... ename-them
Потом в Google, из интереса, задал в поиск "vba outlook save all attachments". Он меня засыпал готовыми решениями.
А относительно Вашего кода - найдите папку, куда сохранять. В свойствах - скопируйте путь к этой папке, и замените ним этот DestFolder = "C:\Card_In\". А вдруг будет достаточно. Все, чем мог помочь. Не использую Outlook.
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 29
03.07.2013, 10:00  [ТС]
Спасибо) Сейчас вот поменяла, буду смотреть

Добавлено через 42 минуты
Не получилось народ, может, кто то еще подскажет, что не так с этим макросом
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.07.2013, 10:03
Немного моих мыслей. Если Вы всю почту в одну папку - будет у Вас бардак. Тематика разная... Лучше что б код вызывал сам диалог с открытой уже Вашей главной папкой, а Вы выбрали конкретную подпапку какой-то тематики. Другая мысль (что-то их много сегодня ) - зачем хранить на компе? Не лучше в облаке? Будет доступ из любой точки мира и из любого компа (если много ездите).
А что Вы поменяли? И на что? И в каком месте ругается (какая строка подсвечивается)? И что сообщает?
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 29
03.07.2013, 10:09  [ТС]
У меня это рабочая почта и на нее приходят определенные письма с вложениями, которые должны быть в одной папке конкретной.... раньше все так и было и не было проблем, потом вот, сбой и все(( я бы с радостью по другому как то сделала, но не могу, надо только так и все, чтобы письма были прочитаны, а вложения сохранялись в конкретную папку

Добавлено через 2 минуты
ошибка никакая не появляется, просто приходит почта и макрос срабатывает только через раз, одно прочел и сохранил, а второе нет, я поменяла DestFolder = "C:\Card_In\", вместо этой папки поставила ту, куда надо сохранять, но наверное это тоже не правильно, потому что она тогда два раза повторяется эта папка... я даже пыталась создать на диске С эту папку, все равно не помогает
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.07.2013, 10:25
А рабочую папку в поездках (командировках) просматривать не нужно?
Смотрите, вот это:
Visual Basic
1
2
3
4
5
6
If Len(Dir("L:\Карты\CardPL\Files\In\")) = 0 Then
 
DestFolder = "C:\Card_In\"
Else
DestFolder = "L:\Карты\CardPL\Files\In\"
End If
читается так: если на диске L в папке "Карты" нет папки "CardPL"... тогда выбрать на диске С папку Card_In. Проанализируйте это по своей ситуации.
А почему не поэкспериментрируете с кодами по моей ссылке? Правда, их тоже нужно подкоректировать.
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 29
03.07.2013, 10:36  [ТС]
Не, папка чисто на рабочем месте нужна и все.... так, но папка CardPl там есть, и она никуда не денется, вот нет как раз папки на диске С...Т.е. получается, что можно вообще убрать эту строчку DestFolder = "C:\Card_In\"? Права я уже это тоже пробовала, удаляла ее, но все равно все так же и оставалось(((
Если честно я заходила на ссылку, но там ничего не поняла(((
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.07.2013, 10:41
Создайте себе какую-то новую папку, например My_Post. Киньте мне путь (правая клавиша на папке, в окне ищите что-то подобное "Размещение"). Я посмотрю на глобусе, подкоректирую и кину Вам тестировать. Аж интересно стало, чего Ваш комп такой упрямый.
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 29
03.07.2013, 10:53  [ТС]
L:\Карты\MY_POST
Спасибо огромное за помощь, а то я совсем отчаялась
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.07.2013, 10:55
Ого! Ну у Вас там и дисков! Посмотрю обязательно, но не сразу - работа.
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 29
03.07.2013, 11:09  [ТС]
жду
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.07.2013, 11:50
Вот протестировать не могу, к сожалению. Копируете все это в модуль VBA Outlook (желательно - новый). Запускаете процедуру Sub test(). Имя (test) можете изменить (если у Вас уже есть такие имена процедур).
Здесь, при определенных условиях, есть возможность включить выбор папки пользователем. Но сейчас должна сохранять в Вашу конкретную MY_POST. Ссылку на сайт я добавил. Пробуйте.
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
Option Explicit
 
Sub test()
'http://www.jpsoftwaretech.com/ _
         save-all-attachments-from-selected-folder/
  Call SaveAllAttachments("L:\Карты\MY_POST\", False)
End Sub
 
Sub SaveAllAttachments(ByVal folderName As String, _
      ByVal StripAttachments As Boolean)
' save all attachments from all emails in a folder to a folder on the hard disk
' optionally delete the attachments as well
' by Jimmy Pena, [url]http://www.jpsoftwaretech.com[/url] 4/28/2009
 
' check if folder exists, if not then create it
' if folder cannot be created, exit
If Not FolderExists(folderName) Then
  On Error Resume Next
  MkDir folderName
  If Err <> 0 Then Exit Sub
  On Error GoTo 0
End If
 
' check that folderName ends with "\"
If Right$(folderName, 1) <> "\" Then
  folderName = folderName & "\"
End If
 
' get default Inbox items collection
Dim olFldr As Outlook.MAPIFolder
Dim itms As Outlook.Items
Set olFldr = GetDefaultFolder(olFolderInbox)
Set itms = olFldr.Items
 
' create subset of items collection
Dim newItems As Outlook.Items
Set newItems = itms.Restrict("[Attachment] > 0")
 
' if there are no messages with attachments, exit
If newItems.Count = 0 Then
  RmDir folderName
  Exit Sub
End If
 
' loop through items subset, save all attachments to disk folder
Dim Msg As Outlook.MailItem
Dim MsgAttach As Outlook.attachments
Dim attachmentNumber As Integer
For Each Msg In newItems
  Set MsgAttach = Msg.attachments
  For attachmentNumber = MsgAttach.Count To 1 Step -1
    MsgAttach.Item(attachmentNumber).SaveAsFile _
      folderName & MsgAttach.Item(attachmentNumber).Filename
    ' delete attachment (optional)
    If StripAttachments Then
      MsgAttach.Item(attachmentNumber).Delete
    End If
  Next attachmentNumber
Next Msg
 
End Sub
 
Private Function GetDefaultFolder(outlookFolder As OlDefaultFolders) As _
      Outlook.MAPIFolder
' returns MAPIFolder object from default folder list to calling program
 
Dim olApp As Outlook.Application
Dim olNS As Outlook.Namespace
Set olApp = Outlook.Application
Set olNS = olApp.GetNamespace("MAPI")
 
Set GetDefaultFolder = olNS.GetDefaultFolder(outlookFolder)
 
End Function
 
Function FolderExists(ByVal strPath As String) As Boolean
' from [url]http://allenbrowne.com[/url]
    On Error Resume Next
    FolderExists = ((GetAttr(strPath) And vbDirectory) = vbDirectory)
End Function
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 29
03.07.2013, 11:54  [ТС]
ух какой большой))) так, ну я все сделала, будем ждать писем
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.07.2013, 12:01
А зачем их ждать? Сами себе отправьте с одного ящика на другой. И сколько и какие хотите вложения. Потом хоть скажите результат.
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 29
03.07.2013, 12:06  [ТС]
Так, ну я вот отправляла файлы и мне пришло подтверждение о прочтении, в нем вложений нет и он мне высветил ошибку ,что вложений нет и в операции есть сбой и не сделал его прочитанным(((

Добавлено через 3 минуты
я к сожалению не могу отправить себе сама, там замудренная и защищенная почта((( идет определенно по одному каналу и с конкретных адресов(
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.07.2013, 12:09
Это может быть не ошибка. Просто мог сообщить, что вложений нет. Без тестирования - тяжело говорить.
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 29
03.07.2013, 12:14  [ТС]
Я сглупила надо было скрин шот сделать((( сейчас вот должно придти в сложением, тогда уже посмотрим как отработает, а вседующий раз как придет без вложения я пришлю скрин, чтобы посмотрели
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 29
03.07.2013, 12:17  [ТС]
вот пришло вложение и такое выскочило((
и ничего не сделал, и прочел ни сохранил((
Вложения
Тип файла: docx Документ Microsoft Office Word.docx (44.2 Кб, 26 просмотров)
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 29
03.07.2013, 12:20  [ТС]
может в имеющемся макросе что то просто не так написано
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.07.2013, 12:24
Нужно поиграться. Немного освобожусь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.07.2013, 12:24
Помогаю со студенческими работами здесь

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

Макрос Outlook для сохранения вложения в папку по частичному совпадению имени файла
Всем добрый день! Каждый день приходит в одном письме множество файлов. Есть ли макрос который находит по названию и сохраняет не все...

Надстройка Outlook для шифрования писем
Необходимо, чтобы при нажатии кнопки &quot;отправить&quot; задавался вопрос &quot;Хотите подписать данное письмо?&quot; Если нажали &quot;да&quot;, то,...

Правило для отправки писем outlook 2010
Добрый день! Передо мной стоит задача, над которой бьюсь всю неделю и видимо не пойду на выходные :( Помогите, пожалуйста, блондинке....

Код на VBA для Outlook (поиск непрочитанных писем)
Подскажите, пожалуйста, какой код понадобится для следующих действий: Необходимо с заданной периодичностью включать событие (поиск...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru