Люди, подскажите кто шарит. Хочу отправить запрос с телефона емейлом роботу в VBA (Excel), чтобы прислал текущее состояние робота и системы.
Аутлук на компе принимает запрос (простой емейл с текстом в теле) и че дальше? как-то его надо считать в VBA. Где его искать и как? Кто что подскажет, как лучше сделать?
Отправлять из VBA как-то проще было…
Гипотетически наверно можно через API microsoft ловить хэндлеры и их обрабатывать. Но это я не знаю как,
я бы сделал проще и устойчивее:
VBA проверяет папку с письмами по расписанию (каждую минуту например),
если появляется файл (письмо) с нужным содержанием, то отправляет Вам что надо.
buyandsell-ru.com, создайте правила в аутлуке которые что-нибудь делают, или в аутуковском VBA напишите скрипт который создает файлик.
А из Excel уже проверять его наличие.
Криво.
Лучше поставить на комп и на мобильник приложение Dropbox с единым аккаунтом и роботом просто периодически сбрасывать файл в нужную папку на локальном компе. На телефоне файл автоматом синхронизируется и вы увидите состояние своего робота.
Опционально можно завести специальный файл для команд роботу.
Привет! Можно через VB.NET попробовать. Там есть объект для работы с письмами Outlook.MailItem. Но это надо Microsoft Visual Studio Express ставить. Он, в принципе, бесплатный (2010 подойдет).
Роман Соколов, а нет ли у Вас какого-то простого примера программы типа — найти письмо во Входящих с темой «Робот» и записать текст тела в текстовый файл?
buyandsell-ru.com, не, сам не делал, хотя использую VB.NET в роботах. Условно говоря тут нужно приложение с таймером, которое опрашивает почтовый ящик раз во сколько-то секунд/минут/часов и тело письма куда-то пишет.
Роман Соколов, так проще на Outlook VBA написать скрипт, который при получении определенного письма создает файл.
А его наличие уже проверять из Excel VBA
… охохоюшки… и как люди роботов в 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
… а вообще имхо удобнее просто слать письма по факту каждой операции — если сделок немного, если вал — периодически или по отклонениям… ну то есть запрос на почту — удобно конечно, но сложнее будет вам в реализации…
buyandsell-ru.com, выше неплохой пример приложен — по событию получения нового письма анализируется его автор, открывается excel и что-то туда записывается… нужно только в последней части приделать считывание данные их excel и отправку их в письме, что совсем не сложно… какой части кода не хватает или в чем трудности — опишите, это все несложно поправить…
roan, все правильно написали. Я ВБА только как построитель отчетов по работе использую, а для всего остального VB.NET, поэтому не могу сказать как там с Аутлуком работать. В ВБ.НЕТ я привел ссыль как забрать все, что нужно из аутлука. Мог бы и код написать, но смысл, если по ссылке, по-сути, вся программа написана. Она из 5-6 строк состоит всего. ОК, будут проблемы, давайте вместе наваяем код. Если уж совсем прижмет.
Роман Соколов, я не против помочь, только вот outlook сейчас уже редко встречается, последние лет 10 сплошь lotus notes на работе, а в личном плане yandex-почта удобнее… если не найду старые наработки, где все во все стороны переливалось — ну найдем работающие примеры на planetaexcel.ru или на sql.ru и т.п. — ресурсов нормальных не так много… удивляет, что на март-лабе так мало внимания этим вопросам — все сплошь политику обсуждают… %-)))
Наши гризли испугались гамбургских петухов… хе хеВойна Европе будет снится в кошмарных снах, где они будут ностальгировать по фюреру и подличать… хрюшки недорезанные, воевать не фэйки стряпать… Россия...
znak, старая песня о главном, и где бы не пел, все мимо. Киви, башнефть, теперь здесь зазубренное веками выдаешь? Про то что ты учитель учителей еще небыло? Еще про то что те кто в курсе пихая акци...
«Народный суд средней ступени города Цзинань (провинция Шаньдун. — Прим. ред.) публично приговорил <…> бывшего секретаря партийного комитета и председателя правления Банка Китая Лю Ляньгэ за пол...
Softline_IR, объясните, а то я не понимаю. У вас чистый долг/EBITDA резко вырос, до 2,4х, при текущих ставках слишком высокий показатель. Не безрассудно ли так увеличивать долг, занимая под высокий...
я бы сделал проще и устойчивее:
VBA проверяет папку с письмами по расписанию (каждую минуту например),
если появляется файл (письмо) с нужным содержанием, то отправляет Вам что надо.
А из Excel уже проверять его наличие.
Лучше поставить на комп и на мобильник приложение Dropbox с единым аккаунтом и роботом просто периодически сбрасывать файл в нужную папку на локальном компе. На телефоне файл автоматом синхронизируется и вы увидите состояние своего робота.
Опционально можно завести специальный файл для команд роботу.
ну можно и так конечно.
просто, быстро, бесконечно расширяемо, не нужно писать письма(небезопасные), минимум знаний.
намного безопаснее расшаривания папки на компе с роботом
особенно осознавая, что за этим стоит твой код,
каждую строчку которого ты понимаешь и знаешь.
А его наличие уже проверять из Excel VBA
… вот пример (находится за пару минут) с планеты эксель, почти все необходимое в нем есть:
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