如何在vba中用URLDownloadToFile下载文件?

api函数URLDownloadToFile函数可以从互联网上下载位流并保存为文件。

URLDownloadToFile函数的语法如下:

HRESULT URLDownloadToFile(
             LPUNKNOWN            pCaller,
             LPCTSTR              szURL,
             LPCTSTR              szFileName,
  _Reserved_ DWORD                dwReserved,
             LPBINDSTATUSCALLBACK lpfnCB
);

其中主要用到的参数是szURL,表示要下载的文件的URL链接;szFileName参数表示要保存的文件名称或者要保存的文件的完整路径,其它参数一般设置为0即可。

URLDownloadToFile函数的VB声明语法如下:

Public Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Integer, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Integer, ByVal lpfnCB As Integer) As Long

URLDownloadToFile函数只要下载一开始就会返回0,但是并不表示下载一定成功。

在一些小文件的下载上,URLDownloadToFile函数可以起到很好的效果。

以下是用URLDownloadToFile函数下载网易上的股票历史交易数据的代码,其中工作表sheet1的A列是股票代码:

Sub QQ1722187970()
    Dim oWK As Worksheet
    Set oWK = Sheet1
    Dim sPath As String
    sPath = Excel.ThisWorkbook.Path & "\下载\"
    With oWK
        For i = 2 To .Range("a65536").End(xlUp).Row
            sGP = Format(.Cells(i, "a"), "000000")
            sTURL = "http://basic.10jqka.com.cn/api/stock/export.php?export=main&type=simple&code=" & sGP
            URLDownloadToFile 0, sTURL, sPath & sGP & "_main_simple.xls", 0, 0
        Next i
    End With
    MsgBox "下载完成"
End Sub

 

       

发表评论