מישהו מכיר כאן VBA?
כתבתי קוד בVBA להעלאת תוכן מגיליון מסוים באקסל, ללא הורדה למחשב.
כשניסיתי בקוד אחר לבצע רק הורדה למחשב זה עבד מעולה.
אבל כשאני עושה את הקוד הזה להעלאה באתר, הוא מחזיר לי שגיאה, ואני לא מצליח להבין מה בדיוק הנקודה שחסר.
את הטוקן והנתיב נשלח בGET והשאר בPOST.
אשמח לעזרה!
' יצירת אובייקט HTTP
Dim http As Object
Set http = CreateObject("MSXML2.XMLHTTP.6.0")
' הגדרת URL
Dim url As String
url = "https://www.call2all.co.il/ym/api/UploadFile?token=" & token & "&path=" & path
' פתיחת חיבור ל-POST
http.Open "POST", url, False
' הגדרת כותרת הבקשה
http.setRequestHeader "Content-Type", "multipart/form-data"
' יצירת גבול גוף הבקשה
Dim boundary As String
boundary = "-----" & Format(Now, "yyyyMMddhhmmss")
Dim body As String
body = "--" & boundary & vbCrLf
body = body & "Content-Disposition: form-data; name=""file""; filename=""IdListMessage.ini""" & vbCrLf
body = body & "Content-Type: text/plain; charset=UTF-8" & vbCrLf & vbCrLf
body = body & EncodeToUTF8(iniContent) & vbCrLf
body = body & "--" & boundary & "--" & vbCrLf
' הגדרת אורך הגוף
http.setRequestHeader "Content-Length", Len(body)
' שליחת הבקשה
On Error GoTo ErrorHandler
http.send body
' קבלת התגובה
Dim response As String
response = http.responseText
' הצגת התגובה
MsgBox response
' שחרור האובייקט
Set http = Nothing
בנוסף מוגדר פונקציה לקידוד נכון (כי חשבתי שיש בעיה בקידוד)
Function EncodeToUTF8(ByVal str As String) As String
Dim arr() As Byte
arr = StrConv(str, vbFromUnicode)
EncodeToUTF8 = arr
End Function