返回列表 上一主題 發帖

[發問] 請問這可設定等幾秒沒開網頁或網頁錯誤就執行下一筆嗎,謝謝

本帖最後由 quickfixer 於 2022-2-12 21:01 編輯

回復 24# wufonna


    玩了一下,會出錯是沒抓到資料,好像是程式跑太快,流量限制的問題,可是沒擋ip?
程式沒問題,另外做一個commandbutton,全部編號跑完後,再重抓有空白的資料
Sub test()
    With 工作表1
        For i = 2 To .Range("A" & .Rows.Count).End(xlUp).Row
只抓沒資料的編號
           If .Cells(i, 3) = "" Then
            v = .Cells(i, 1).Value
            GetDividend (v)
'這幾行code 同 AllFile ,恕刪
           End If
        Next
    End With
End Sub

TOP

本帖最後由 quickfixer 於 2022-2-12 22:45 編輯

回復 26# wufonna

沒注意到SelectionChange裡面有重抓的程式碼

出錯時    debug.print HTMLsourcecode.body.innerhtml 出現這個,沒有抓到資料


google httpcode=500
伺服器端錯誤回應
500 Internal Server Error
伺服器端發生未知或無法處理的錯誤。

可能程式跑太快,同個ip請求太多,網頁來不及處理

TOP

本帖最後由 quickfixer 於 2022-2-12 23:14 編輯

回復 27# quickfixer

我參考你給的01網址686f,加入重新下載功能,可全部跑完
  1. Private Sub GetDividend(ByVal ss As String)     '取股利網頁 '2022/2/22 換這段程式碼 在 https://www.mobile01.com/topicdetail.php?f=511&t=4737630&p=3 的21樓
  2. Dim URL, HTMLsourcecode, GetXml, Table
  3. Dim i As Integer, j As Integer, r As Integer
  4. Set HTMLsourcecode = CreateObject("htmlfile")
  5. Set GetXml = CreateObject("msxml2.xmlhttp")
  6. URL = "http://pscnetinvest.moneydj.com.tw/z/zc/zch/zch_" & ss & ".djhtm"

  7. r = 0
  8. retry:
  9. On Error Resume Next

  10. With GetXml
  11. .Open "GET", URL, False
  12. .setRequestHeader "Cache-Control", "no-cache"
  13. .setRequestHeader "Pragma", "no-cache"
  14. .setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
  15. .send

  16. HTMLsourcecode.body.innerhtml = .responsetext
  17. Set Table = HTMLsourcecode.all.tags("table")(2).Rows

  18. If Err.Number <> 0 Then

  19. If r > 3 Then
  20. '超過3次,改抓下一筆,避免無限loop
  21. Exit Sub
  22. End If
  23. Debug.Print Err.Description
  24. r = r + 1
  25. On Error GoTo -1
  26. Err.Clear
  27. '等0.5秒
  28. Delaytick (0.5)
  29. GoTo retry

  30. End If
  31.             
  32. For i = 0 To Table.Length - 1
  33. For j = 0 To Table(i).Cells.Length - 1
  34. 工作表2.Cells(i + 1, j + 1) = Table(i).Cells(j).innertext
  35. Next j
  36. Next i
  37. End With
  38. Set HTMLsourcecode = Nothing
  39. Set GetXml = Nothing
  40. End Sub



  41. Sub Delaytick(setdelay As Single)
  42.    
  43.     Dim StartTime As Double, NowTime As Double
  44.     StartTime = Timer * 100
  45.     setdelay = setdelay * 100
  46.     Do
  47.       NowTime = Timer * 100
  48.       DoEvents
  49.     Loop Until NowTime - StartTime > setdelay
  50.    
  51. End Sub
複製代碼
但是你allfile裡面那個Split(Date, "/")(1) - 1
可能要改一下,有人excel日期是用-不是/
用mid可能會比較好一些

TOP

        靜思自在 : 世上有兩件事不能等:一、孝順 二、行善。
返回列表 上一主題