Люди, подскажите кто шарит. Хочу отправить запрос с телефона емейлом роботу в 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 и т.п. — ресурсов нормальных не так много… удивляет, что на март-лабе так мало внимания этим вопросам — все сплошь политику обсуждают… %-)))
Новый выпуск облигаций ПКО "Вернём" (B|ru|, 150 млн р.,YTM 28,71%)
❗️ Информация для квалифицированных инвесторов 💼 После успешного первого выпуска облигаций коллекторское агентство «Вернем» ( B|ru| ) анонсирует второй! 📌 Предварительные параметры...
Автомошенников заставят оплачивать расходы страховщиков в тройном размере
В МВД предложили усилить меры против мошенничества с полисами ОСАГО. Среди инициатив — создание базы клиентов с «красными флагами», куда будут включать подозрительных заявителей, а также введение...
X5 и Русагро подписали меморандум о стратегическом партнерстве
🔹 27–28 марта «Русагро» провела стратегическую сессию с генеральными и коммерческими директорами ключевых федеральных сетей, а также топ-производителями FMCG неконкурирующих бизнесов. В рамках...
НМТП: все в рамках прогноза за 2025 год, но осадочек остался и будущее туманно из-за атак БПЛА? Актив для терпеливых инвесторов
НМТП отчитался за 2025 год — в целом все отлично у компании, 40 млрд руб прибыли пробили за год (впервые без учета переоценок)
Сразу сравниваю со своим прогнозом от Портового среза (2...
Alexander7, суд не признал, что статус микрофинансовой организации приравнивается к статусу кредитной организации для целей инициирования дела о банкротстве в отношении должника
Минпромторг не исключает введение обязательной предустановки российской ОС в автомобили отечественного производства — Алиханов Минпромторг РФ не исключает введение в перспективе обязательного требован...
Минпромторг не исключает введение обязательной предустановки российской ОС в автомобили отечественного производства — Алиханов Минпромторг РФ не исключает введение в перспективе обязательного требован...
❗️❗️Инарктика – всё плохо?
Отчёт за 2025 год на первый взгляд выглядит слабо: падение выручки, EBITDA, убыток… Многие на таких цифрах просто перестают рассматривать компанию.Но давайте разберёмс...
я бы сделал проще и устойчивее:
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