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

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

02.07.2013, 13:37. Показов 17914. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru