Page 1 of 1

สอบถาม VBA ส่งรูปผ่าน Line notify ครับ

Posted: Sun Jan 19, 2020 1:38 pm
by koker12
คือผมติดปัญญาการอ้างอิงรูปภาพครับ ไม่สามารถอ้างอิงได้

Code: Select all

Sub SendMessageToLineNotify()
Dim oXML As Object
Dim strToken As String
Dim strMessage As String
Dim strDate As String
Dim URL As String

strToken = Sheet1.Range("B1")
URL = "https://notify-api.line.me/api/notify"
strDate = Format(Now, "DD/MM/YYYY - HH:MM:SS")
Pic = "C:\All\1.jpg"

strMessage = "message=" & strDate & Pic
Set oXML = CreateObject("Microsoft.XMLHTTP")
With oXML

.Open "POST", URL, 0

.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.SetRequestHeader "Authorization", "Bearer " & strToken
.send (strMessage)

Debug.Print oXML.responseText
End With

Set oXML = Nothing
End Sub

Re: สอบถาม VBA ส่งรูปผ่าน Line notify ครับ

Posted: Sun Jan 19, 2020 4:29 pm
by snasui
:D ตัวอย่าง Code การส่งภาพผ่าน Line Notify ตามด้านล่างครับ

Code: Select all

Sub SendPictureViaLineNotify()
    Dim URL             As String
    Dim sToken          As String
    Dim sFilepath       As String
    Dim nFile           As Integer

    Dim baBuffer()      As Byte
    Dim ssPostData1     As String
    Dim ssPostData2     As String
    Dim ssPostData3     As String
    Dim Messagelength   As Integer
    
    Dim arr1()          As Byte
    Dim arr2()          As Byte
    Dim arr3()          As Byte
    Dim arr4()          As Byte
    
    Dim arraytotal      As Long
    Dim sendarray()     As Byte
     
    Const STR_BOUNDARY  As String = "------------------------058b4eeb7d99b4f6"
    
    sToken = "Your token" 'Paste your token after equal sign
    
    URL = "https://notify-api.line.me/api/notify"
    
    sFilepath = Application.GetOpenFilename(FileFilter:="Picture (*.jpg*),*.jpg*,(*.png*),*.png*")
    
    If sFilepath = "False" Then Exit Sub
    
    sfilename = VBA.Right(sFilepath, VBA.InStr(VBA.StrReverse(sFilepath), "\") - 1)

    ssPostData1 = vbCrLf & "--" & STR_BOUNDARY & vbCrLf & _
                   "Content-Disposition: form-data; name=" & """message""" & vbCrLf & vbCrLf
                
    arr1 = StrConv(ssPostData1, vbFromUnicode)
                
    arr2 = (" ")
    
    ssPostData2 = vbCrLf & "--" & STR_BOUNDARY & vbCrLf & "Content-Disposition: form-data; name=" & _
            """imageFile""" & "; filename=" & sfilename & vbCrLf & _
            "Content-Type: image/jpng" & vbCrLf & vbCrLf
                
    arr3 = StrConv(ssPostData2, vbFromUnicode)
    
    nFile = FreeFile
    Open sFilepath For Binary Access Read As nFile
    If LOF(nFile) > 0 Then
        ReDim baBuffer(0 To LOF(nFile) - 1) As Byte
        Get nFile, , baBuffer
        imagear = baBuffer
    End If
    Close nFile

    arr4 = StrConv(vbCrLf & "--" & STR_BOUNDARY & "--" & vbCrLf, vbFromUnicode)
    
    arraytotal = UBound(arr1) + UBound(arr2) + UBound(arr3) + UBound(imagear) + UBound(arr4) + 4
    
    ReDim sendarray(arraytotal)
    
    For i = 0 To UBound(arr1)
        sendarray(i) = arr1(i)
    Next

    For i = 0 To UBound(arr2)
        sendarray(UBound(arr1) + i + 1) = arr2(i)
    Next

    For i = 0 To UBound(arr3)
        sendarray(UBound(arr1) + UBound(arr2) + i + 2) = arr3(i)
    Next

    For i = 0 To UBound(imagear)
        sendarray(UBound(arr1) + UBound(arr2) + UBound(arr3) + i + 3) = imagear(i)
    Next

    For i = 0 To UBound(arr4)
        sendarray(UBound(arr1) + UBound(arr2) + UBound(arr3) + UBound(imagear) + i + 4) = arr4(i)
    Next

    With CreateObject("Microsoft.XMLHTTP")
        .Open "POST", URL, 0
        .SetRequestHeader "Content-Type", "multipart/form-data; boundary=" & STR_BOUNDARY
        .SetRequestHeader "Authorization", "Bearer " & sToken
        .send sndar(sendarray)
    End With
End Sub

Public Function sndar(sendarray As Variant) As Byte()
    sndar = sendarray
End Function
ดูเพิ่มเติมที่นี่ครับ Send Image with LINE Notify

Re: สอบถาม VBA ส่งรูปผ่าน Line notify ครับ

Posted: Sun Jan 19, 2020 5:24 pm
by koker12
ผมใช้ Code นี้ แล้วมันเป็นแบบนี้ครับ ต้องแก้ไขตรงไหนครับ
Untitled.png

Re: สอบถาม VBA ส่งรูปผ่าน Line notify ครับ

Posted: Sun Jan 19, 2020 5:35 pm
by snasui
:D ตัวแปรนั้นใช้เหมือนต้นฉบับครับ

Re: สอบถาม VBA ส่งรูปผ่าน Line notify ครับ

Posted: Sun Jan 19, 2020 5:37 pm
by koker12
ผมอยากให้ ส่งทั้ง รูป และ ตัวหนังสือ ต้องแก้ตรงไหนครับ

Re: สอบถาม VBA ส่งรูปผ่าน Line notify ครับ

Posted: Sun Jan 19, 2020 5:53 pm
by snasui
:D ใช้ทั้งสอง Code ประกอบกันได้โดยใช้ Code แรกส่งข้อความมและเรียก Code ที่สองเพื่อส่งภาพครับ

Re: สอบถาม VBA ส่งรูปผ่าน Line notify ครับ

Posted: Sun Jan 19, 2020 5:56 pm
by koker12
ขอบคุณครับ

Re: สอบถาม VBA ส่งรูปผ่าน Line notify ครับ

Posted: Fri Apr 21, 2023 10:18 pm
by nutpochan
สอบถามเพิ่มเติม ครับ

ถาม เราจะเอา option หน้าต่าง เลือกไฟล์ ออก

โดย เรากำหนด แหล่งที่อยู่ไฟล์ไป เลย สามารถ แก้ไข โค๊ดได้อย่างไรครับ

Re: สอบถาม VBA ส่งรูปผ่าน Line notify ครับ

Posted: Sat Apr 22, 2023 6:25 am
by nutpochan
รบกวน เจ้า ของกระทู้ แชร์ โค๊ดที่สำเร็จ ทีครับ

Re: สอบถาม VBA ส่งรูปผ่าน Line notify ครับ

Posted: Sat Apr 22, 2023 6:47 am
by snasui
nutpochan wrote: Fri Apr 21, 2023 10:18 pm เราจะเอา option หน้าต่าง เลือกไฟล์ ออก

โดย เรากำหนด แหล่งที่อยู่ไฟล์ไป เลย สามารถ แก้ไข โค๊ดได้อย่างไรครับ
:D แก้ที่ Statement นี้

Application.GetOpenFilename(FileFilter:="Picture (*.jpg*),*.jpg*,(*.png*),*.png*")

ถ้าไม่ต้องการให้เกิด Popup ก็ใส่ Path เข้าไปแทนครับ

Re: สอบถาม VBA ส่งรูปผ่าน Line notify ครับ

Posted: Sat Apr 22, 2023 5:06 pm
by nutpochan
ผม ใส่ เข้าไป แบบนี้ แล้ว eror แก้อย่างไร ครับ

Code: Select all

 sFilepath = Application.GetOpenFilename(FileFilter:=C:\Users\nutpo\Desktop\tarket\IMG_9176.JPG)

Re: สอบถาม VBA ส่งรูปผ่าน Line notify ครับ

Posted: Sat Apr 22, 2023 5:29 pm
by nutpochan

Code: Select all

 sFilepath = Range("ak2")
แก้ได้ แล้ว ขอบคุณครับ