buyandsell-ru.com
buyandsell-ru.com личный блог
06 июля 2015, 14:42

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

Люди, подскажите кто шарит. Хочу отправить запрос с телефона емейлом роботу в VBA (Excel), чтобы прислал текущее состояние робота и системы. 
Аутлук на компе  принимает запрос (простой емейл с текстом в теле) и че дальше? как-то  его надо считать   в VBA. Где его искать и как? Кто что подскажет, как лучше сделать?
Отправлять из VBA  как-то проще было…
25 Комментариев
  • AlexeyTikhonov
    06 июля 2015, 14:59
    Гипотетически наверно можно через API microsoft ловить хэндлеры и их обрабатывать. Но это я не знаю как,
    я бы сделал проще и устойчивее:
    VBA проверяет папку с письмами по расписанию (каждую минуту например),
    если появляется файл (письмо) с нужным содержанием, то отправляет Вам что надо.
      • AlexeyTikhonov
        06 июля 2015, 15:21
        buyandsell-ru.com, создайте правила в аутлуке которые что-нибудь делают, или в аутуковском VBA напишите скрипт который создает файлик.
        А из Excel уже проверять его наличие.
  • Redline
    06 июля 2015, 15:25
    Криво.
    Лучше поставить на комп и на мобильник приложение Dropbox с единым аккаунтом и роботом просто периодически сбрасывать файл в нужную папку на локальном компе. На телефоне файл автоматом синхронизируется и вы увидите состояние своего робота.
    Опционально можно завести специальный файл для команд роботу.
    • AlexeyTikhonov
      06 июля 2015, 15:26
      Redline, небезопасно, не по запросу,
      ну можно и так конечно.
      • Redline
        06 июля 2015, 15:28
        AlexeyT,
        просто, быстро, бесконечно расширяемо, не нужно писать письма(небезопасные), минимум знаний.
        • AlexeyTikhonov
          06 июля 2015, 15:33
          Redline, отправление писем, тем более через https,
          намного безопаснее расшаривания папки на компе с роботом
            • AlexeyTikhonov
              06 июля 2015, 15:36
              buyandsell-ru.com, ага;)
              особенно осознавая, что за этим стоит твой код,
              каждую строчку которого ты понимаешь и знаешь.
  • Привет! Можно через VB.NET попробовать. Там есть объект для работы с письмами Outlook.MailItem. Но это надо Microsoft Visual Studio Express ставить. Он, в принципе, бесплатный (2010 подойдет).
  • Тут в принципе про mailItem и работу с ним. Как минимум свойства Вам подходят, например Subject или Body. www.askit.ru/custom/vba_office/m13/13_06_outlook_items_objects.htm
      • buyandsell-ru.com, не, сам не делал, хотя использую VB.NET в роботах. Условно говоря тут нужно приложение с таймером, которое опрашивает почтовый ящик раз во сколько-то секунд/минут/часов и тело письма куда-то пишет.
        • Юрий Ч.
          06 июля 2015, 17:02
          приложение с таймером, которое опрашивает почтовый ящик
          Вроде бы проще SMTP сервер на VB.NET запилить — если он с экселем дружит(?). Из плюсов — мгновенный ответ.
        • AlexeyTikhonov
          06 июля 2015, 17:59
          Роман Соколов, так проще на Outlook VBA написать скрипт, который при получении определенного письма создает файл.
          А его наличие уже проверять из Excel VBA
  • aka
    06 июля 2015, 16:56
    … охохоюшки… и как люди роботов в 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
  • aka
    06 июля 2015, 17:24
    … а вообще имхо удобнее просто слать письма по факту каждой операции — если сделок немного, если вал — периодически или по отклонениям… ну то есть запрос на почту — удобно конечно, но сложнее будет вам в реализации…
  • aka
    06 июля 2015, 17:47
    buyandsell-ru.com, выше неплохой пример приложен — по событию получения нового письма анализируется его автор, открывается excel и что-то туда записывается… нужно только в последней части приделать считывание данные их excel и отправку их в письме, что совсем не сложно… какой части кода не хватает или в чем трудности — опишите, это все несложно поправить…
    • roan, все правильно написали. Я ВБА только как построитель отчетов по работе использую, а для всего остального VB.NET, поэтому не могу сказать как там с Аутлуком работать. В ВБ.НЕТ я привел ссыль как забрать все, что нужно из аутлука. Мог бы и код написать, но смысл, если по ссылке, по-сути, вся программа написана. Она из 5-6 строк состоит всего. ОК, будут проблемы, давайте вместе наваяем код. Если уж совсем прижмет.
      • aka
        06 июля 2015, 21:45
        Роман Соколов, я не против помочь, только вот outlook сейчас уже редко встречается, последние лет 10 сплошь lotus notes на работе, а в личном плане yandex-почта удобнее… если не найду старые наработки, где все во все стороны переливалось — ну найдем работающие примеры на planetaexcel.ru или на sql.ru и т.п. — ресурсов нормальных не так много… удивляет, что на март-лабе так мало внимания этим вопросам — все сплошь политику обсуждают… %-)))

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн