iT邦幫忙

0

如何下載網頁變數檔名檔案

  • 分享至 

  • xImage

如題,例如此網址:http://download.post.gov.tw/post/download/Village_H_10602.xls
後面的10602每天都會變化,請問該如何以vba每天自動下載檔案,又不受數字的變化影響呢?

看更多先前的討論...收起先前的討論...
Hans5300609 iT邦研究生 4 級 ‧ 2018-05-01 00:27:05 檢舉
程式用正規表達式去判斷?
Daniel iT邦新手 2 級 ‧ 2018-05-01 19:39:45 檢舉
如果數字變動有規律,就可以寫程式去下載
h大&D大~~
數字為公司檔案上傳時間,例如0823,0915,1002,但因為上傳時間不固定,所以沒辦法以固定時間或我去下載的當下時間來定義,請問醬有解ㄇ?
-
Daniel iT邦新手 2 級 ‧ 2018-05-02 10:28:39 檢舉
如果你能確定 Village_H_?????.xls 在目錄下只有這一個檔案,沒有開頭檔名相同的檔案,那就寫巢狀迴圈去窮舉,九九乘法表會寫吧,反正一天也只有 1440 分鐘,不難寫。
如果檔案不只一個,那還是從前端寫網頁爬蟲抓檔吧。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
最佳解答

沒寫過vba, 臨時改了一下,測試過可下載,參考Daniel意見

下載函數

Sub download(str As String)
    Dim myURL As String

    '來源檔案
    myURL = "http://download.post.gov.tw/post/download/Village_H_1" & str & ".xls"

    Dim WinHttpReq As Object
    Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
    WinHttpReq.Open "GET", myURL, False
    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 ("d:\Village_H_1" & str & ".xls")
        oStream.Close
    End If
End Sub

執行函數

Sub exec()
    Dim i, j As Integer
    Dim d, h, str As String
    For i = 1 To 12
        d = Format(i, "00")
        For j = 1 To 23
           h = Format(j, "00")
           str = d & h
           download str
        Next
    Next i
End Sub
看更多先前的回應...收起先前的回應...

補充:如果不想重覆下載,可在儲存檔案位置的地方,檢查一下檔案是否已存在
話說只要一執行,你家目錄裡的檔案全給下載下來了~
/images/emoticon/emoticon39.gif

10602.xls 最前面的1是?

k大~~~太厲害了你,測試已解決問題喔!!

k大不好意思,請問如果我要下載類似檔案,但網址後面由時間變為數字,網址為http://10.62.21.121/phpbb/download/file.php?id=5709,數字為公司上傳檔案次數,故每日將增加1或2,依上傳次數遞增。希望同上邏輯,將id=後面的變數檔案全數下載。請問該如何修改巨集呢?非常感謝~

我要發表回答

立即登入回答