Подскажите, пожалуйста, как- то можно отправить через Excel(VBA) таблицу с данными. То есть, к примеру, у меня есть таблица c данными на листе в ячейках B38:J39. Эту таблицу хотелось бы отправить в телеграм. Вижу пока только два варианта: отправка каждой строки в отдельном сообщении, где построчно будут данные из столбцов каждой строки; Либо отдельным макросом сначала формировать скриншот этого диапазона, отправлять его картинкой и удалять этот скриншот. Собрал вот такой код, он рабочий, но он отправляет данные только из одной ячейки, и если в ячейке есть переносы на другую строку, то текст всё равно приходит в "слипшимся" виде(т.е. без переносов): [vba]
Код
Function RussianStringToURLEncode_New(ByVal txt As String) As String For i = 1 To Len(txt) l = Mid(txt, i, 1) Select Case AscW(l) Case Is > 4095: t = "%" & Hex(AscW(l) \ 64 \ 64 + 224) & "%" & Hex(AscW(l) \ 64) & "%" & Hex(8 * 16 + AscW(l) Mod 64) Case Is > 127: t = "%" & Hex(AscW(l) \ 64 + 192) & "%" & Hex(8 * 16 + AscW(l) Mod 64) Case 32: t = "%20" Case Else: t = l End Select RussianStringToURLEncode_New = RussianStringToURLEncode_New & t Next End Function
Sub MessegeToTelegram1() Dim Token As String, ChatID As String, message As String, strPhoto As String Dim sURL As String, oHttp As Object, sHTML As String message = RussianStringToURLEncode_New(Range("B38").Text) ' отправляется текст из ячейки B34 'message = RussianStringToURLEncode_New(Range("B38").Text) 'strPhoto = ConvertFileToBase64("C:\Users\.........\Desktop\12.jpg") 'strPhoto = "C:\Users\.......\Desktop\12.jpg" Token = "......:........" ChatID = "............." sURL = "https://api.telegram.org/bot" & Token & "/sendMessage?chat_id=" & ChatID & "&text=" & message Set oHttp = CreateObject("Msxml2.XMLHTTP") oHttp.Open "POST", sURL, False oHttp.Send Set oHttp = Nothing End Sub
[/vba]
Вообще возможно, чтобы в телеграм сообщение приходило построчно, т.е. одна ячейка= одна строка: Первое сообщение: Первая строка: данные из ячейки B38 Вторая строка: данные из ячейки С38 . . . Последняя строка: данные из ячейки J38
Второе сообщение: Первая строка: данные из ячейки B39 Вторая строка: данные из ячейки С39 . . . Последняя строка: данные из ячейки J39 и т.д.
Не совсем еще представляю как это реально будет выглядеть и "удобочитаемо" ли это будет, по-этому еще пытался сделать отправку скришота таблицы в JPG, но тут так и не понял как правильно отправить файл с локального диска.
Прошу подсказать, где я допускаю ошибку.
Заранее спасибо. :help:
Добрый день, эксперты!
Подскажите, пожалуйста, как- то можно отправить через Excel(VBA) таблицу с данными. То есть, к примеру, у меня есть таблица c данными на листе в ячейках B38:J39. Эту таблицу хотелось бы отправить в телеграм. Вижу пока только два варианта: отправка каждой строки в отдельном сообщении, где построчно будут данные из столбцов каждой строки; Либо отдельным макросом сначала формировать скриншот этого диапазона, отправлять его картинкой и удалять этот скриншот. Собрал вот такой код, он рабочий, но он отправляет данные только из одной ячейки, и если в ячейке есть переносы на другую строку, то текст всё равно приходит в "слипшимся" виде(т.е. без переносов): [vba]
Код
Function RussianStringToURLEncode_New(ByVal txt As String) As String For i = 1 To Len(txt) l = Mid(txt, i, 1) Select Case AscW(l) Case Is > 4095: t = "%" & Hex(AscW(l) \ 64 \ 64 + 224) & "%" & Hex(AscW(l) \ 64) & "%" & Hex(8 * 16 + AscW(l) Mod 64) Case Is > 127: t = "%" & Hex(AscW(l) \ 64 + 192) & "%" & Hex(8 * 16 + AscW(l) Mod 64) Case 32: t = "%20" Case Else: t = l End Select RussianStringToURLEncode_New = RussianStringToURLEncode_New & t Next End Function
Sub MessegeToTelegram1() Dim Token As String, ChatID As String, message As String, strPhoto As String Dim sURL As String, oHttp As Object, sHTML As String message = RussianStringToURLEncode_New(Range("B38").Text) ' отправляется текст из ячейки B34 'message = RussianStringToURLEncode_New(Range("B38").Text) 'strPhoto = ConvertFileToBase64("C:\Users\.........\Desktop\12.jpg") 'strPhoto = "C:\Users\.......\Desktop\12.jpg" Token = "......:........" ChatID = "............." sURL = "https://api.telegram.org/bot" & Token & "/sendMessage?chat_id=" & ChatID & "&text=" & message Set oHttp = CreateObject("Msxml2.XMLHTTP") oHttp.Open "POST", sURL, False oHttp.Send Set oHttp = Nothing End Sub
[/vba]
Вообще возможно, чтобы в телеграм сообщение приходило построчно, т.е. одна ячейка= одна строка: Первое сообщение: Первая строка: данные из ячейки B38 Вторая строка: данные из ячейки С38 . . . Последняя строка: данные из ячейки J38
Второе сообщение: Первая строка: данные из ячейки B39 Вторая строка: данные из ячейки С39 . . . Последняя строка: данные из ячейки J39 и т.д.
Не совсем еще представляю как это реально будет выглядеть и "удобочитаемо" ли это будет, по-этому еще пытался сделать отправку скришота таблицы в JPG, но тут так и не понял как правильно отправить файл с локального диска.
doober, у меня не получается, или до меня не доходит=) у меня еще не такой продвинутый уровень VBA. можете в коде показать, что нужно добавить/изменить?
doober, у меня не получается, или до меня не доходит=) у меня еще не такой продвинутый уровень VBA. можете в коде показать, что нужно добавить/изменить?lanitfin
Отправляемый текст Message = "B38\tС38\nB39\tС39\nJ38\n\n<a href=""http://www.excelworld.ru/forum/10-47549-1"">ссылка на эту тему</a>" Результат
Отправляемый текст Message = "B38\tС38\nB39\tС39\nJ38\n\n<a href=""http://www.excelworld.ru/forum/10-47549-1"">ссылка на эту тему</a>" Результат doober
Сообщение отредактировал doober - Воскресенье, 23.05.2021, 21:13
doober, у нас с Вами могут отличаться версии Excel?
Копирую полностью Вашу строку и получаю:
во-первых Кириллица отображается как "????" во-вторых: почему - то нет ни пробелов, ни переносов. И указываются не значения ячеек, а адрес ячейки. У Вас тоже приходят адреса ячеек, а не значения ячеек.
Ссылка работает, но замысел был в том, чтобы сриншот/таблица/документ выгружался с локального компьютера.
doober, у нас с Вами могут отличаться версии Excel?
Копирую полностью Вашу строку и получаю:
во-первых Кириллица отображается как "????" во-вторых: почему - то нет ни пробелов, ни переносов. И указываются не значения ячеек, а адрес ячейки. У Вас тоже приходят адреса ячеек, а не значения ячеек.
Ссылка работает, но замысел был в том, чтобы сриншот/таблица/документ выгружался с локального компьютера.lanitfin
Что можно предпринять, чтобы не отправлялась строка(строки), где ячейки пустые. То есть, к примеру, диапозон таблицы B38:J45, сообщения отправляются построчно, но начиная со строки 42 данных в строках нет, и сообщения отправляться не должны.
doober, да, работает. Спасибо. коды еще пока не сравнивал.
Подскажите, пожалуйста, правильно ли я делаю построчные сообщения(каждое сообщение- отдельная строка): [vba]
Код
Sub MessegeToTelegram1() Dim Token As String, ChatID As String, message As String, strPhoto As String Dim sURL As String, oHttp As Object, sHTML As String ' первая строка message = Range("B38").Text & "\t" & _ " " & Range("j38").Text & "\t" & _ " (" & Range("I38").Text & ")" & "\n" & _ "ИМЯ: " & Range("C38").Text & "\t" & _ Range("D38").Text & "\n" & _ "слово: " & Range("F38").Text & "\n" & _ "ключ: " & Range("G38").Text & "\n" & _ Range("K38").Text & "\n" & _ "тема: " & Range("H38").Text
Что можно предпринять, чтобы не отправлялась строка(строки), где ячейки пустые. То есть, к примеру, диапозон таблицы B38:J45, сообщения отправляются построчно, но начиная со строки 42 данных в строках нет, и сообщения отправляться не должны.lanitfin
doober, Привет! А есть решение по отправке сообщений в телегу через VBAна MacBook? Пересмотрел много форумов, пишут что Microsoft не предусматривал разработку Microsoft XML 6.0 library на Mac. Может есть другой способ отправлять сообщения через Excel в Телеграмм? Заранее спасибо
doober, Привет! А есть решение по отправке сообщений в телегу через VBAна MacBook? Пересмотрел много форумов, пишут что Microsoft не предусматривал разработку Microsoft XML 6.0 library на Mac. Может есть другой способ отправлять сообщения через Excel в Телеграмм? Заранее спасибоkuzmapikar1992