2015-12-01 2 views
1

Я пытаюсь автоматизировать ввод данных с моей модели с сайта PIMCO для базы данных фонда.Извлечь книгу Excel с веб-сайта с помощью vba

Сайт: https://www.pimco.com/investments/mutual-funds/emerging-markets-bond-fund/inst

Мне нужно извлечь данные Holdings Report (XLS) рабочей книги с сайта.

Мой код:

Set elements = HTMLDoc.getElementsByTagName("a") 

For Each element In elements 
    If InStr(element.innerText, "Holdings Report") Then 
     hrefLink = element.href 

     IE.navigate hrefLink // This creates a new pop up and a message asking if the file must be saved/opened 

     Set wb = Workbooks.Open(element.href) // Throws an error 
    End If 
Next 

ссылка вебсервис (hrefLink выше) вызывается по нажатию кнопки Холдинг Отчет является

https://www.pimco.com/handlers/displaydocument.ashx?c=72201P522&wd=Holdings Отчет & п = PIMCO фонды Emerging Markets Corp Bond Fund Портфельные Holdings 709. XLS & ID = QRQg2jRnd9AJrFn% 2fOA2Sp0xR09EkWc64pyAEuordzHsARqqpDYmvlBBcIgDokEeCM6cdWs55% 2f4wk9gu2ywfEdow% 2fMGHlPUWvKY1XdSZmKrA3dh% 2F4% 2fXZQYr0OIvF2X7n9DExITdx0FiH2Zif6g0MZzESHcGg% 2fc8NNWJtiJJ5XM0xuLVVJAXKxIy3Ss94TpsWkZGjcOl% 2fqh3hyYNFIRkz2BWGmp7Kb5UUYnPq% 2b2wOMX8SlnWx0bj9CCaPa ZaoIBhSMcvumJSEOqtmDJhAa% 2f1FWPWyayrohG3C% 2b5QsHRW7w8onfUCq08RkCaaRpDafTPDobAtrczfeMSCHldvK2S5dv6v39eWx358pDYNilnNnjDXv7al% 2bfXyjglUYZFabL210V

ответ

2

Основываясь на этом: How do i download a file using VBA (Without internet explorer)

Sub DownloadFile() 

    Dim myURL As String 
    myURL = "https://YourWebSite.com/?your_query_parameters" 

For Each element In elements 
    If InStr(element.innerText, "Holdings Report") Then 

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

    myURL = WinHttpReq.responseBody 
    If WinHttpReq.Status = 200 Then 
     Set oStream = CreateObject("ADODB.Stream") 
     oStream.Open 
     oStream.Type = 1 
     oStream.Write WinHttpReq.responseBody 
     oStream.SaveToFile "C:\file.csv", 2 ' 1 = no overwrite, 2 = overwrite 
     oStream.Close 
    End If 
Next  
End Sub 

Надеется, что это поможет!

+0

Спасибо, работал как шарм :) – ramses1592