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

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

02.07.2013, 13:37. Показов 18239. Ответов 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
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 29
03.07.2013, 12:25  [ТС]
Студворк — интернет-сервис помощи студентам
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.07.2013, 14:48
Вот гад, ругается на свойство [Attachment], а почему - пока не знаю. Проверил другой код на компе с ms 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
33
34
35
36
37
38
39
40
41
Option Explicit
'http://stackoverflow.com/questions/11781320/ _
         download-attachment-from-outlook-and-open-in-excel
 
Const olFolderInbox As Integer = 6
'~~> Path for the attachment
Const AttachmentPath As String = "L:\Карты\MY_POST\"
 
Sub DownloadAttachment()
    Dim oOlAp As Object, oOlns As Object, oOlInb As Object
    Dim oOlItm As Object, oOlAtch As Object
    '~~> New File Name for the attachment
    Dim NewFileName As String
    NewFileName = AttachmentPath & Format(Date, "DD-MM-YYYY") & "-"
 
    '~~> Get Outlook instance
    Set oOlAp = GetObject(, "Outlook.application")
    Set oOlns = oOlAp.GetNamespace("MAPI")
    Set oOlInb = oOlns.GetDefaultFolder(olFolderInbox)
 
    '~~> Check if there are any actual unread emails
    If oOlInb.Items.Restrict("[UnRead] = True").Count = 0 Then
        MsgBox "NO Unread Email In Inbox"
        Exit Sub
    End If
 
    '~~> Extract the attachment from the 1st unread email
    For Each oOlItm In oOlInb.Items.Restrict("[UnRead] = True")
        '~~> Check if the email actually has an attachment
        If oOlItm.Attachments.Count <> 0 Then
            For Each oOlAtch In oOlItm.Attachments
                '~~> Download the attachment
                oOlAtch.SaveAsFile NewFileName & oOlAtch.FileName
'                Exit For
            Next
        ' Else
            ' MsgBox "The First item doesn't have an attachment"
        End If
        Exit For
    Next
 End Sub
Он будет к имени сохраненных att-t добавлять дату. Не убирал, думаю - это правильно.
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 29
03.07.2013, 15:04  [ТС]
нее, дата мне не нужна, у меня файлы уже с датой в имени, у меня народ запутается, можно тупо убрать эту строку?

Добавлено через 1 минуту
с какого места правильнее удалить, все что касается даты?

Добавлено через 2 минуты
блииин, пришли файлы, опять не сработало((((
такая же ошибка, что ошибка в правиле(((

Добавлено через 5 минут
и получается у меня старый макрос именно в каком то месте чудит, потому что он читает, сохраняет, но только через один... приходит следующий фал ,он срабатывает на первом ,а второй зависает и т.д.
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.07.2013, 15:33
Что б без даты, вот это:
NewFileName = AttachmentPath & Format(Date, "DD-MM-YYYY") & "-"
нужно так:
NewFileName = AttachmentPath & "-"
Но если Вам придет файл с именем, которое уже есть в папке - может быть беда.
А что с правилом - я понятия не имею. Может, айтишники Ваши что-то хитро настроили? У меня все работает. И еще там:
Visual Basic
1
2
3
4
5
    '~~> Check if there are any actual unread emails
    If oOlInb.Items.Restrict("[UnRead] = True").Count = 0 Then
        MsgBox "NO Unread Email In Inbox"
        Exit Sub
    End If
делает так, что разборка только с непрочитанными письмами. Если непрочитанных нет - выходит из выполнения. Чтобы просмотрел все - это переведите в коменты (спереди апостроф).
Сейчас посмотрю Ваш старый у себя на машине.

Добавлено через 9 минут
Ваш код (старый) у меня тоже работает. Нужно разбираться с правилами.

Добавлено через 9 минут
По ошибкам, посмотрите здесь:
http://support.microsoft.com/kb/2281463/ru
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 29
03.07.2013, 15:36  [ТС]
так, может я что то не так делаю, я вам опишу как все делаю, вы скажите все ли правильно...

Захожу в Outlook - Сервис - Макрос - Редактор Visual Basic
Выделяю старый макрос – удаляю его –
И вставляю тот, который вы мне выслали –
Нажимаю дискету сохранить – и выхожу
Так же я еще захожу в Сервис- Правила и оповещения (док 4)
Вложения
Тип файла: doc док 4.doc (80.0 Кб, 16 просмотров)
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 29
03.07.2013, 15:51  [ТС]
может в правиле у меня не те галочки стоят?

Добавлено через 6 минут
Мастер правил
Условия отбора:
*только на данном компьютере
*адресованные мне
*от <отправители или список рассылки>
Выберите действия:
*запустить сценарий
Укажите исключения:
галочек нет
И в завершении правила:
* включить правило
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.07.2013, 17:06
В мастере 4 окна (3 "дальше"). У меня так:
* назначенные для всех категорий
*очистить категории сообщений
- нигде
* включить правило
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 29
03.07.2013, 17:27  [ТС]
бррр, что то я не пойму, у меня такого вообще нет((( т.е. такого текста нет, у меня в мастере, даже близко(((

Добавлено через 6 минут
что то нашла похожее

Добавлено через 4 минуты
блин, все сделала так же, но вообще не читает, то хотя бы через один, а так нет вообще(((
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
03.07.2013, 18:11
Все-таки, почему не попросите Вашего айтишника? Я тут вряд смогу помочь (никогда не использовал outlook). Но помогу в другом. Тот большой код (очень мне понравился, гибкий) у меня заработал. В выражении:
Set newItems = itms.Restrict("[Attachment] > 0")
нужно Attachment написать в соответствии с локализацией. Если у Вас русская, то, быстрее всего, это будет выглядеть так:
Set newItems = itms.Restrict("[Вложения] > 0")
Все работает. Теперь думаю, может начать использовать Outlook? Сегодня еще побегаю по глобусу, может по этим правилам что-то найду. И Вы попробуйте найти какой-то форум русским по Outlook (думаю, это вопрос приложения, а не vba). Быстрее будет результат.

Добавлено через 16 минут
Посмотрел Ваш последний скин (док4). У меня только одно правило: "Автоматическое сохранение вложений". И отключено "Включить правила для всех RSS-каналов"

Добавлено через 14 минут
Посмотрите здесь про файлы *.iss
http://open-file.ru/types/iss
Быстрее всего это работа Ваших айтишников.
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 29
04.07.2013, 11:09  [ТС]
Да наш айтишник от него фиг чего дождешься((( поэтому и стала сама пробовать...
я конечно еще пороюсь...но уже отчаялась....(((

Добавлено через 6 минут
просто не понятно, почему через один....получается так о все работает, но через один файл...бред какой то(((
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
04.07.2013, 19:44
Я не мог добраться до Outlook, sorry. Махнул рукой на все. Зашел сюда:
там скачал mAttachmentSaver.zip. Переслал себе (диагноз, наверное, сам с собой... ) кучу файлов с вложениями. Открыл Outlook. Удерживая Ctrl, выделил все нужные пересылки. Запустил макрос. Он попросил указать папку. Я ему показал. Все туда загнал! До единого. Я на пальцах посчитал. А вот айтишника нужно ставить на место. Как это не хочет. Он что - неполноценный? Или переходите на другой клиент.
О! Забыл. Распакуете zip. Там будет файл с расширением *.bas. Откроете редактор VBA. Дальше File > import> [указываете этот *.bas]. И o'key!
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 29
05.07.2013, 09:46  [ТС]
я вот скачала все, установила....да вроде все сохраняет, но только как то странно получается, как я поняла он автоматически не работает...и как то он сохранил ,но само сообщение стояло непрочитанное(((
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
05.07.2013, 10:02
Здравствуйте! Я честно сказал - outlook не знаю, он мне не нравится, с ним не работаю. Но должна быть возможность все это полностью автоматизировать под Ваши потребности (например, по анологии с Excel, при открытии книги. Или создать кнопку на панели, и в код добавить выделение автоматом всех сообщений. И заменить выбор папки какой-то одной, но я бы все-таки оставил возможность выбора). Был очень сам удивленный, как много на эту тему решений на глобусе. Думаю, все можно найти уже готовое. Просто ищите английским. Все-таки 80% (если не больше) инфы на этом языке, и только 20 - на всех других. Что б с outlook играться - нужно его иметь под рукой постоянно. И у меня не очень есть время. Пробовал Вам помочь как мог. Наверное, поэтому и другие молчат, что можно найти все готовое.
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 29
05.07.2013, 10:16  [ТС]
Все равно, спасибо вам огромное.... может еще получится что то сделать
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
05.07.2013, 10:17
Анекдот какой-то. Записал в поиск "vba outlook select all unread messages". Куча. Открыл первое что попало:
http://timothychenallen.blogsp... y-all.html
Видите? И думать ничего не надо. "Бери и пей!" Такое впечатление, что почти у всей сети одна проблема - как улучшить outlook. И вот зачем он тогда нужный?
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 29
05.07.2013, 10:33  [ТС]
Да уж.... такое чувство, что программа изначально не доработана(( и ее постоянно нужно улучшать....
я вот с первой программой вообще сейчас не пойму, она мне делает все так же как и мой макрос, через один все читает... хрен поймешь что за ерунда....
кстати, а мне надо было стирать мой макрос после установки этой программки, может мой2 старый его тормозит сейчас?
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
05.07.2013, 10:37
Не должен был бы... А как Вы его запускаете?
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 29
05.07.2013, 10:39  [ТС]
что именно стары макрос или программу?
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
05.07.2013, 10:53
Как запустить программу - мне больше-меньше понятно. А вот как Вы запускаете старый макрос на выполнение? Комбинация клавишь?, кнопка?, что-то другое?
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 29
05.07.2013, 11:15  [ТС]
мне просто при входе в outlook вылезало окошко, типо включить макрос, я нажимаю включить и все, он сам срабатывает, как приходит новое письмо, он его ставит как прочитанный и сохраняет вложения...и все...

Добавлено через 35 секунд
подскажите, а как теперь удалить эту программку из outlook, что то она вообще не так все делает(((

Добавлено через 6 минут
ой все, удалила)))

Добавлено через 19 секунд
видимо это не то, что мне надо ((((блиин, засада просто((((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.07.2013, 11:15

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью. Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru