我正在撰寫一個exel宏,在運行另一個宏后發送結果的截圖。 . 拍攝的螢屏截圖被保存為JPG圖片,存放在C: documentsSCREENSHOT目錄下。 我想把圖片1.jpg "C:documentsSCREENSHOTpicture1.jpg "發送到一個使用機器人的telegram組。
我可以使用以下代碼輕松地發送文本資訊。
Private Sub telegram_pruebas() 'Solicita un mensaje esta función del mensaje y el ID del chat>
Dim objRequest As Object 'Con lo que se crea la solicitud de internetDim datos_posteo As String 'Lo que enviará por mensaje .
Dim token, ChatID, mensaje As String
token = "xxxxxxxxxxxxxxxxxxxxxxxxxxx"。
ChatID = -xxxxxxxxxxxx
訊息 = "xxxxxxx"/span>
datos_posteo = "chat_id=" & ChatID & "&text=" & mensaje 'Se 'Se le muestra al robot que enviar and a que chat.
Set objRequest = CreateObject("MSXML2.XMLHTTP") 'Crea un request como archivo XHLM.
With objRequest
.打開 "POST", "https://api.telegram.org/bot" & token & "/sendMessage? ", False 'Aqui esta la dirección del sitio web con el api del robot.
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 'No se que sea"/span>。
.send (datos_posteo) 'La indicación de enviar el texto al chat。
結束 與
End Sub
問題是我找不到發送存盤在我電腦中的圖片的方法,我看了檔案,它說必須使用 multipart/form-data方法,但我不知道如何改變我的Sub telegram_pruebas()以使用該方法,我已經看過堆疊overflow和其他網頁上的所有例子,我嘗試了一些像這樣的例子
。Private Sub telegram_pruebas_photo() 'Solicita un mensaje esta función del mensaje y el ID del chat>
Dim objRequest As Object 'Con lo que se crea la solicitud de internet
Dim datos_posteo As String 'Lo que enviará por mensaje .
Dim token, ChatID, photoAs String
token = "xxxxxxxxxxxxxxxxxxxxxxxxx"。
聊天ID = -xxxxxxxxxxx
photo = "C:documentsSCREENSHOTpicture1.jpg"
datos_posteo = "chat_id=" & ChatID & "& photo=" & photo 'Se 'Se le muestra al robot que enviar and a que chat
Set objRequest = CreateObject("MSXML2.XMLHTTP") 'Crea un request como archivo XHLM。
With objRequest
.打開 "POST"/span>, "https://api.telegram.org/bot"/span> & token & "/sendPhoto? ", False 'Aqui esta la dirección del site web con el api del robot.
.setRequestHeader "Content-Type", "multipart/form-data" 'No se que sea'向聊天室發送文本的指示。
回應 = .responseText
結束 與
MsgBox response
結束 Sub
這不起作用,我得到一個空的回應。
有沒有人可以修改我的代碼來解決這個問題,或者至少幫助我了解我的錯誤。
如何使用Excel VBA向電報發送桌面照片。 用VBA將本地存盤的照片發送至Telegram
還有很多其他的。
謝謝
uj5u.com熱心網友回復:
試試吧
sub telegram_pruebas_photo()
Const URL = "https://api.telegram.org/bot"/span>
Const TOKEN = "xxxxxxxxxxxxxxxxxxxxxxxxx"
Const METHOD_NAME = "/sendPhoto?"
Const CHAT_ID = "-xxxxxxxxxxx"/span>
Const FOLDER = "C: documentsSCREENSHOT"
Const JPG_FILE = "picture1.jpg"
Dim data As Object, key
Set data = CreateObject("Scripting.Dictionary"/span>)
data.Add "chat_id", CHAT_ID
' 產生邊界。
Dim BOUNDARY, s As String, n As Integer
For n = 1 To 16: s = s & Chr(65 Int(Rnd * 25)) 。下一步 下一步
BOUNDARY = s & CDbl(Now)
Dim part As String, ado As Object
For Each key In data.key
part = part & "--"/span> & BOUNDARY & vbCrLf
part = part & "Content-Disposition: form-data; name="" & key & """" & vbCrLf & vbCrLf
part = part & data(key) & vbCrLf
下一個
'檔案名
part = part & "--"/span> & BOUNDARY & vbCrLf
part = part & "Content-Disposition: form-data; name=""photo""; filename="" & JPG_FILE & """" & vbCrLf & vbCrLf
' 讀取jpg檔案為二進制檔案。
Dim jpg
Set ado = CreateObject("ADODB.Stream"/span>)
ado.Type = 1 'binary >。
ado.Open
ado.LoadFromFile FOLDER & JPG_FILE
ado.Position =0
jpg = ado.read
ado.Close
' 結合部分,jpg ,結束。
ado.Open
ado.Position = 0 0
ado.Type = 1 ' binary
ado.Write ToBytes(part)
ado.Write jpg
ado.Write ToBytes(vbCrLf & "--"/span> & BOUNDARY & "--"/span>)
ado.Position =0
Dim req As Object, reqURL As String.
Set req = CreateObject("MSXML2.XMLHTTP")
reqURL = URL & TOKEN & METHOD_NAME
With req
.Open "POST", reqURL, False.
.setRequestHeader "Content-Type", "multipart/form-data; boundary=" & BOUNDARY
.send ado.read
MsgBox .responseText
結束 與
End Sub
Function ToBytes(str As String) As Variant
Dim ado As Object
Set ado = CreateObject("ADODB.Stream"/span>)
ado.Open
ado.Type = 2 ' text
ado.Charset = "_autodetect"
ado.WriteText str
ado.Position = 0
ado.Type = 1結束 功能
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/324156.html
標籤:
