Страницы: 1
RSS
Чтение содержимого email
 
Добрый день!
Коллеги и эксель друзья, у меня есть задача/идея сделать автоматизацию некоторого отчета.
Смысл в том, что бы данные с отчета по средствам vba и телеграмм бота передавались соответственно в телеграмм.
Это я осилил - бот есть, сообщения присылает при сработке макроса.
Теперь думаю как сделать обратно - пишешь боту и в зависимости от слова срабатывает макрос.
Например пишешь боту "вчера" и в ответ приходят данные из эксель отчета о продажах за вчера (срабатывает макрос на просчет таблицы и отправляется ботом в телеграмм - это уже есть).
Вот как сделать так, что бы срабатывал макрос при запросе от бота пока не придумал.
Из вариантов сейчас нашел бота который умеет отправлять e-mail. Вот теперь думаю как найти в оутлуке нужное письмо и взять от туда текст письма. А текст как раз по моей задумке и будет триггер. Единственное наверное тогда должен макрос цикличном режиме постоянно смотреть почту.
Идея помоему интересная, но в интернете не нарыл ничего похожего...
Может есть идеи или натолкнете на решение) заранее благодарю!
Всё что мы есть - это результат наших мыслей ©Будда
 
Цитата
как сделать так, что бы срабатывал макрос при запросе от бота пока не придумал
не так делается
макрос должен раз в секунду подключаться к боту (получать новые сообщения), и анализировать их (там есть данные, кто что ввёл в бота)
а бот сам никак не может дать команду на ваш комп
 
Цитата
написал:
не так делаетсямакрос должен раз в секунду подключаться к боту (получать новые сообщения), и анализировать их (там есть данные, кто что ввёл в бота)а бот сам никак не может дать команду на ваш комп
ооо точно. Да, это гораздо более адекватный метод)
Я так понимаю речь про https://api.telegram.org/bot'токен бота'/getupdates вот такой ресурс.
если вдруг есть ссылочка где уже кто то делал подобный макрос считывания последнего запроса буду очень благодарен!
Всё что мы есть - это результат наших мыслей ©Будда
 
Так, я справился с этой задачей практически....
Но, сломался на простой вроде задаче....
Как указать ему последнюю ячейку в столбце? Вот щас последняя А11, но дальше будет А12 и тд
Помогите пожалуйста допилить....
[CODE][/CODE]
Изменено: Павел Баскаков - 17.06.2022 13:47:25
Всё что мы есть - это результат наших мыслей ©Будда
 
Павел Баскаков, приветствую! Можно например так:
Код
Dim LastRow as long
LastRow = Cells(Rows.Count, 1).End(xlUp).row ' 1 - номер столбца
 
Цитата
написал:
Павел Баскаков , приветствую! Можно например так:Код ? 12Dim LastRow as longLastRow = Cells(Rows.Count, 1).End(xlUp).row ' 1 - номер столбца
Привет! Спасибо, натолкнул на мысль.
Если прям так вставлять, то бьёт в ошибку - дальше по тексту макроса он опять ищет конечную строку получается.
Доработал вот так - работает:
Код
LastRow = Cells(Rows.Count, 1).End(xlUp).Select

ячейкаскодом = Application.ActiveCell
Всё что мы есть - это результат наших мыслей ©Будда
 
, теперь бот научился отвечать - поставил в обратную отправку то, что отправили ему (текст который получили макросом выше).
Образовался правда недостаток - отлично работает с английским. Но, не хочет понимать русский.
Точнее он понимает в кодировке.
Итого, если пишешь боту на английском - то текст припарированный макросом и будет на английском - например отправили "privet bot", то и получим - "privet bot".
А вот если на русском - то отправляем "Привет бот" - получаем \u041f\u0440\u0438\u0432\u0435\u0442 \u0431\u043e\u0442
В целом, можно и так конечно, просто потом научить макрос отзываться вот на такую кодировку, но не удобно конечно.
Ну либо писать боту на инглише - что не будет удобно пользователю (начальники не любят сложно)))
Всё что мы есть - это результат наших мыслей ©Будда
 
и так, получилось сделать так, что бы при запуске макроса "Загрузка" проверялось последнее сообщение боту телеграмм и отсылалось обратно ботом в телеграмм.
И боту можно писать на русском и бот в ответ пишет на русском.
В последствии он конечно будет отправлять не тоже самое сообщение, а данные из ячеек или даже скрин (тоже нашёл как сделать). Естественно в зависимости от слова тригера которое было отправлено боту.

Теперь не могу найти, как его зациклить... Это то, о чём как раз говорил , в самом начале - за что ему спасибо.  
Но при этом нужно что бы он  не просто постоянно делал тоже самое - а проверял.
То есть примерно такой алгоритм я себе представляю: "макрос проверяет сообщение постоянно - находит новое (будет ниже по столбцу) запускает процесс ответа.
Если такое уже было (он уже ответил на это сообщение) - идёт снова искать новое сообщение.

Вот как это сделать не найду... У же час рою в интернете и не могу даже близко найти, что нужно.

Макрос кстати прилагаю - вдруг пригодится кому. Нужно только вставить токен бота, указать папку для временного файла и ID чата.
Изменено: Павел Баскаков - 17.06.2022 13:47:01
Всё что мы есть - это результат наших мыслей ©Будда
 
декодировать надо строку из JSON
пример кода: https://excelvba.ru/code/JSON_decode
 
еще вариант без декодирования (нашел на просторах интернета) :
Код
Private Sub CommandButton1_Click()
' Program Excel Messeger
' Purpose : Send Message to Telegram
' Author : John Eswin Nizar
' Date : 09 October 2017
    
Dim objRequest As Object
Dim strChatId As String
Dim strMessage As String
Dim strPostData As String
Dim strResponse As String

 strChatId = TextBox1.Value
 strMessage = TextBox2.Value
 
strPostData = "chat_id=" & strChatId & "&text=" & strMessage
 
 Set objRequest = CreateObject("MSXML2.XMLHTTP")
With objRequest
  .Open "POST", "https://api.telegram.org/bot" & токен_бота & "/sendMessage?", False
  .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  .send (strPostData)
   GetSessionId = .responseText
   MsgBox GetSessionId
End With
End Sub
 
, , Это моменты уже работают в файле в приложении.
То есть он всё читает и отправляет.
Сделал ему цикл из do loop - работает отлично, но где то через минут 40 такой работы зависает эксель наглухо в "Не отвечает" (выкидываю через диспетчер задач).
Что не так не пойму...  При этом эти минут 40 работает просто на 5+, задержка ответа около 1 сек.  
Всё что мы есть - это результат наших мыслей ©Будда
Страницы: 1
Наверх