Вы можете взять любой текущий файл cookie, полученный с помощью кнопки загрузки, а затем передать его в WinHttp-запросе на файл, который вы затем загрузите в двоичном формате.
Cookie находится в заголовках записанного запроса (средства разработки - нажмите F12, чтобы открыть, перейдите на вкладку сети и нажмите «загрузить») - найдите выполненный запрос и посмотрите cookie

Теоретически можно извлечь этот файл cookie по предварительному запросу. В противном случае этот код будет представлять собой временное решение с учетом даты истечения срока действия файлов cookie.
Public Sub Test()
DownloadFile "C:\Users\User\Desktop\", "https://query1.finance.yahoo.com/v7/finance/download/AAPL?period1=345400200&period2=1561046400&interval=1d&events=history&crumb=gdzXUTfT0l/"
End Sub
Public Function DownloadFile(ByVal downloadFolder As String, ByVal downloadURL As String) As String
Dim http As Object, tempArr As Variant
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
http.Open "GET", downloadURL, False
http.setrequestheader "cookie", "B=bujjnjpeetmah; APID=UP86674562-8245-11e9-8433-020167e61c30; PRF=t%3DAAPL%252BASLN%252BA; GUCS=AQBqKRDM; GUC=AQABAQFdDhdd3UImCwVo&s=AQAAADRx8bGn&g=XQzIlw"
http.send
On Error GoTo errhand
With CreateObject("ADODB.Stream")
.Open
.Type = 1
.write http.responseBody
.SaveToFile downloadFolder & "data.csv", 2 '< "/" on enter of downloadFolder. 2 for overwrite which is Ok if no file modifications.
.Close
End With
DownloadFile = downloadFolder & tempArr
Exit Function
errhand:
If Err.Number <> 0 Then
Debug.Print Err.Number, Err.Description
MsgBox "Download failed"
End If
DownloadFile = vbNullString
End Function