Блог им. buyandsell

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

Люди, подскажите кто шарит. Хочу отправить запрос с телефона емейлом роботу в VBA (Excel), чтобы прислал текущее состояние робота и системы. 
Аутлук на компе  принимает запрос (простой емейл с текстом в теле) и че дальше? как-то  его надо считать   в VBA. Где его искать и как? Кто что подскажет, как лучше сделать?
Отправлять из VBA  как-то проще было…
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

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

....все тэги



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