Блог им. buyandsell

Вопрос по VBA и Outlook 2003

Люди, подскажите кто шарит. Хочу отправить запрос с телефона емейлом роботу в VBA (Excel), чтобы прислал текущее состояние робота и системы. 
Аутлук на компе  принимает запрос (простой емейл с текстом в теле) и че дальше? как-то  его надо считать   в VBA. Где его искать и как? Кто что подскажет, как лучше сделать?
Отправлять из VBA  как-то проще было…
30
25 комментариев
Гипотетически наверно можно через API microsoft ловить хэндлеры и их обрабатывать. Но это я не знаю как,
я бы сделал проще и устойчивее:
VBA проверяет папку с письмами по расписанию (каждую минуту например),
если появляется файл (письмо) с нужным содержанием, то отправляет Вам что надо.
avatar
AlexeyT, ну да. я бы тоже так сделал… если бы в аутлуке все не было зашифровано и не черт знает где хранилось. Письмо без вложения. Только тело
avatar
buyandsell-ru.com, создайте правила в аутлуке которые что-нибудь делают, или в аутуковском VBA напишите скрипт который создает файлик.
А из Excel уже проверять его наличие.
avatar
AlexeyT, круто. щас гляну. спасибо
avatar
Криво.
Лучше поставить на комп и на мобильник приложение Dropbox с единым аккаунтом и роботом просто периодически сбрасывать файл в нужную папку на локальном компе. На телефоне файл автоматом синхронизируется и вы увидите состояние своего робота.
Опционально можно завести специальный файл для команд роботу.
avatar
Redline, небезопасно, не по запросу,
ну можно и так конечно.
avatar
AlexeyT,
просто, быстро, бесконечно расширяемо, не нужно писать письма(небезопасные), минимум знаний.
avatar
Redline, мы не ищем легких путей. У нас Самсунг за 600 руб.
avatar
Redline, отправление писем, тем более через https,
намного безопаснее расшаривания папки на компе с роботом
avatar
AlexeyT, Скажите приятней же написать роботу смску «Как дела?» и получить в ответ «Все хорошо»)
avatar
buyandsell-ru.com, ага;)
особенно осознавая, что за этим стоит твой код,
каждую строчку которого ты понимаешь и знаешь.
avatar
Привет! Можно через VB.NET попробовать. Там есть объект для работы с письмами Outlook.MailItem. Но это надо Microsoft Visual Studio Express ставить. Он, в принципе, бесплатный (2010 подойдет).
Роман Соколов, писец. я бы не хотел пока наращивать инструментарий.
avatar
Тут в принципе про mailItem и работу с ним. Как минимум свойства Вам подходят, например Subject или Body. www.askit.ru/custom/vba_office/m13/13_06_outlook_items_objects.htm
Роман Соколов, спасибо посмотрю
avatar
Роман Соколов, а нет ли у Вас какого-то простого примера программы типа — найти письмо во Входящих с темой «Робот» и записать текст тела в текстовый файл?
avatar
buyandsell-ru.com, не, сам не делал, хотя использую VB.NET в роботах. Условно говоря тут нужно приложение с таймером, которое опрашивает почтовый ящик раз во сколько-то секунд/минут/часов и тело письма куда-то пишет.
приложение с таймером, которое опрашивает почтовый ящик
Вроде бы проще SMTP сервер на VB.NET запилить — если он с экселем дружит(?). Из плюсов — мгновенный ответ.
avatar
Роман Соколов, так проще на Outlook VBA написать скрипт, который при получении определенного письма создает файл.
А его наличие уже проверять из Excel VBA
avatar
… охохоюшки… и как люди роботов в excel'е пишут, если связать их с outlook'ом не могут — не понимаю...
… вот пример (находится за пару минут) с планеты эксель, почти все необходимое в нем есть:

Private Sub Application_NewMail()
Set myOlApp = Application
Set myNameSpace = myOlApp.GetNamespace(«MAPI»)
Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox)
Set myitem = myFolder.Items(myFolder.Items.Count)

If myitem.SenderName = «Нужный отправитель» Then
txt = myitem.Body
a = Split(txt, vbNewLine)
For i = 0 To UBound(a)

If InStr(1, a(i), «При трассировке пользователем») > 0 Then Stop: us = «FIO» ' тут необходимо распарсить нужный текст
If InStr(1, a(i), «сервер — клиент:») > 0 Then Stop: Ls = 123 ' тут необходимо распарсить нужный текст
If InStr(1, a(i), «клиент — сервер: „) > 0 Then Stop: UpLs = 123 ' тут необходимо распарсить нужный текст
If InStr(1, a(i), “тестовый объем: „) > 0 Then: dSize = 1234 ' тут необходимо распарсить нужный текст
Next
Set XL = CreateObject(“excel.application»)
XL.Visible = False
xlsFileName = «C:\test.xls» 'Путь к вашему файлу
Set b = XL.workbooks.Open(xlsFileName)
Set r = b.Application.Range(«DATA») 'имя вашей таблицы
i = r.rows.Count
r(i + 1, 1) = us
r(i + 1, 2) = Ls
r(i + 1, 3) = UpLs
r(i + 1, 4) = dSize
b.Close True
XL.Quit
End If
End Sub
avatar
… а вообще имхо удобнее просто слать письма по факту каждой операции — если сделок немного, если вал — периодически или по отклонениям… ну то есть запрос на почту — удобно конечно, но сложнее будет вам в реализации…
avatar
roan, это все есть
avatar
buyandsell-ru.com, выше неплохой пример приложен — по событию получения нового письма анализируется его автор, открывается excel и что-то туда записывается… нужно только в последней части приделать считывание данные их excel и отправку их в письме, что совсем не сложно… какой части кода не хватает или в чем трудности — опишите, это все несложно поправить…
avatar
roan, все правильно написали. Я ВБА только как построитель отчетов по работе использую, а для всего остального VB.NET, поэтому не могу сказать как там с Аутлуком работать. В ВБ.НЕТ я привел ссыль как забрать все, что нужно из аутлука. Мог бы и код написать, но смысл, если по ссылке, по-сути, вся программа написана. Она из 5-6 строк состоит всего. ОК, будут проблемы, давайте вместе наваяем код. Если уж совсем прижмет.
Роман Соколов, я не против помочь, только вот outlook сейчас уже редко встречается, последние лет 10 сплошь lotus notes на работе, а в личном плане yandex-почта удобнее… если не найду старые наработки, где все во все стороны переливалось — ну найдем работающие примеры на planetaexcel.ru или на sql.ru и т.п. — ресурсов нормальных не так много… удивляет, что на март-лабе так мало внимания этим вопросам — все сплошь политику обсуждают… %-)))
avatar

Читайте на SMART-LAB:
Фото
Снижение военной премии в нефти: что это меняет для доллара и G10
Во второй половине понедельника – начале вторники рынки активно пересматривают премию за худший сценарий на энергетическом рынке, что цепочкой...
Фото
Обзор рынка облигаций
Если не считать бури вокруг Евротранса, то неделя прошла спокойно. Рынок продолжает взвешивать ситуацию с дефицитом бюджета и способами...
Фото
12 марта Группа Ренессанс страхование опубликует МСФО за 2025 год
Напоминаем, что 12 марта 2026 года RENI опубликует МСФО Группы за 2025 год, а также проведет День инвестора, чтобы рассказать о ситуации на...
Фото
Гендиректор Инарктики продал свои акции компании. Что это может значить?
Вечером в пятницу (6 марта ) вышел сущфакт о том, что Соснов Илья Геннадьевич, гендиректор Инарктики, продал свои акции компании. В нашем...

теги блога buyandsell-ru.com

....все тэги



UPDONW
Новый дизайн