VBA 从 Jira 下载启用宏的文件 (xlsm)

时间:2021-03-03 03:57:30

标签: vba jira jira-rest-api

我正在尝试从 Jira 下载启用宏的文件 (xlsm),我尝试了以下方法并能够下载该文件,但该文件已损坏。请建议我在这里缺少什么。

Dim myURL As String
myURL = "Put your download link here"

Dim HttpReq As Object
Set HttpReq = CreateObject("Microsoft.XMLHTTP")
HttpReq.Open "GET", myURL, False, "username", "password"
HttpReq.send

myURL = HttpReq.responseBody
If HttpReq.Status = 200 Then
    Set oStrm = CreateObject("ADODB.Stream")
    oStrm.Open
    oStrm.Type = 1
    oStrm.Write HttpReq.responseBody
    oStrm.SaveToFile ThisWorkbook.Path & "\" & "file.xlsm", 2 ' 1 = no overwrite, 2 = overwrite
    oStrm.Close
End If

(source)

1 个答案:

答案 0 :(得分:1)

最后经过多次尝试,下面的代码工作,希望这对其他人有帮助。

Private Sub DownloadFromJira()
  Dim oJiraService As MSXML2.ServerXMLHTTP60
  Dim sPath As String
  Dim sStatus As String
  Dim FileData() As Byte
  Dim FileNum As Long
  
  Set oJiraService = New MSXML2.ServerXMLHTTP60
  
  sPath = "C:\Users\**ID**\Downloads\Test.xlsm"
  
  With oJiraService
    .Open "GET", "https://**MyJiraLink**/secure/attachment/123455/Test.xlsm", False
    .setRequestHeader "Content-Type", "application/json"
    .setRequestHeader "Authorization", "Basic " & EncodeBase64(JiraUID & ":" & JiraPWD)
    .setRequestHeader "Accept", "application/json"
    .send
    
    sStatus = .status & " | " & .statusText
    If .status = "401" Then
        MsgBox "Not Connected"
    End If
    
    FileData = .responseBody
    FileNum = FreeFile
    Open sPath For Binary Access Write As #FileNum
    Put #FileNum, 1, FileData
    Close #FileNum

  End With
  
  Set oJiraService = Nothing
End Sub

Private Function EncodeBase64(srcTxt As String) As String
Dim arrData() As Byte
arrData = StrConv(srcTxt, vbFromUnicode)
Dim objXML As MSXML2.DOMDocument60
Dim objNode As MSXML2.IXMLDOMElement

Set objXML = New MSXML2.DOMDocument60
Set objNode = objXML.createElement("b64")
objNode.DataType = "bin.base64"
objNode.nodeTypedValue = arrData

EncodeBase64 = objNode.Text

Set objNode = Nothing
Set objXML = Nothing
End Function
相关问题