Board logo

標題: 下載期貨資料至工作表 QueryTable出錯 [打印本頁]

作者: cat9350621    時間: 2015-6-1 20:28     標題: 下載期貨資料至工作表 QueryTable出錯

前輩好 程式如下:

Option Explicit

Sub text()
  Dim myIE As InternetExplorer
  Dim myItem
  Dim QryTbl As QueryTable
  Dim myItems
  Dim WebAddress As String
  Dim mydate As Date
  Set myIE = New InternetExplorer
  With myIE
    .Visible = True
    .Navigate "http://www.taifex.com.tw/chinese/3/3_1_1.asp"
    Do Until .ReadyState = READYSTATE_COMPLETE
    Loop
  End With
  With myIE.Document.myform
    .COMMODITY_IDt.Value = "TF"                 '設定契約
  End With
  Set myItems = myIE.Document.getElementsByTagName("Input")
  For Each myItem In myItems
    If myItem.Value = "送出查詢" Then
      myItem.Click                              '按下送出查詢按鈕

End If
  Next
  With Worksheets("臨時資料2")
    .Cells.Clear
    Set QryTbl = .QueryTables.Add("URL;" & WebAddress, .Range("A1"))
  End With
  
  QryTbl.Refresh True

End Sub
----------------------------
錯誤一直卡在這列
  QryTbl.Refresh True
想請教有什麼方式能解決此問題 ..
感謝回覆:)
作者: GBKEE    時間: 2015-6-2 17:10

本帖最後由 GBKEE 於 2015-6-2 17:11 編輯

回復 1# cat9350621
WebAddress 沒給
WebAddress = "http://www.taifex.com.tw/chinese/3/3_1_1.asp"  就沒有錯誤
但不傳回指定的契約

試試看
  1. Option Explicit
  2. Sub text()
  3.   Dim myItems As Object, myItem As Object
  4.   With New InternetExplorer
  5.     .Visible = True
  6.     .Navigate "http://www.taifex.com.tw/chinese/3/3_1_1.asp"
  7.     Do Until .readyState = READYSTATE_COMPLETE:     Loop
  8.     With .Document.myform
  9.         .COMMODITY_IDt.Value = "T5F"                 '設定契約
  10.     End With
  11.     Set myItems = .Document.getElementsByTagName("Input")
  12.     For Each myItem In myItems
  13.         If myItem.Value = "送出查詢" Then
  14.             myItem.Click                              '按下送出查詢按鈕
  15.         End If
  16.     Next
  17.     Do Until .readyState = READYSTATE_COMPLETE: DoEvents: Loop
  18.     Application.Wait Now + #12:00:01 AM#
  19.    
  20.     Set myItems = .Document.getElementsByTagName("table")
  21.     .Document.body.innerHTML = myItems(2).outerHTML
  22.         .ExecWB 17, 2       '  Select All
  23.         .ExecWB 12, 2       '  Copy selection
  24.         .Quit
  25.     End With
  26.     With Worksheets("臨時資料2")
  27.         .Cells.Clear
  28.         .Range("A1").Select
  29.         .PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:=False, NoHTMLFormatting:=True
  30.     End With
  31. End Sub
複製代碼

作者: c_c_lai    時間: 2015-6-7 06:56

回復 2# GBKEE
GBKEE 版大,許久未予請教。
當我使用 With New InternetExplorer
在執行時會產生 ---
" 編譯錯誤:使用者自訂型態尚未定義 "
是否我在設定引用項目中少加入了哪一項?
作者: GBKEE    時間: 2015-6-7 14:21

回復 3# c_c_lai

如圖
  [attach]21118[/attach]
作者: c_c_lai    時間: 2015-6-8 21:44

回復 4# GBKEE
謝謝您!不過執行起來有些錯誤,如圖:
[attach]21135[/attach]
作者: GBKEE    時間: 2015-6-9 16:59

回復 5# c_c_lai
2003執行沒有錯誤,請指出錯誤點.

是   With Worksheets("臨時資料2") ???
作者: no3-taco    時間: 2015-6-10 10:19

Do Until .readyState = READYSTATE_COMPLETE: DoEvents: Loop
    Application.Wait Now + #12:00:01 AM#                  

把上面那兩行改成下面這一行,比較不會因延遲錯誤產生錯誤
    Do Until .readyState = 4 And Not .Busy: DoEvents: Loop
作者: c_c_lai    時間: 2015-6-10 13:47

回復 6# GBKEE
對不起沒留意到  With Worksheets("臨時資料2")  的問題,
謝謝指正。同時將樓上所述 Do Loop 修蓋後執行,
出現 "沒有權限"?[attach]21147[/attach]
作者: GBKEE    時間: 2015-6-10 14:40

回復 8# c_c_lai
按F8 逐步一行一行執行程式碼是沒問題的.但F5執行程序會出現問題的.
  1. Do Until .readyState = 4 And Not .Busy: DoEvents: Loop
複製代碼
這程式碼雖然是等候 IE.readyState ="完成" ,IE Not .Busy  不忙碌 ,之後

但網路資料的下載速度,還是比程式執行的速度慢,
導致 myItems 變數沒有設定到 .Document.getElementsByTagName("table")

所以要等候一下,網路資料下載確實完成
  1. Application.Wait Now + #12:00:01 AM#
  2. Set myItems = .Document.getElementsByTagName("table")
複製代碼

作者: c_c_lai    時間: 2015-6-11 07:32

回復 9# GBKEE
我已將您的指引 (do until) 改回。主要目的我只是在
測試它的環境執行之過程語結果,徒增常見聞別無他意。
謝謝您的不吝指導。
附上剛才不斷執行所一直產生的五種狀況,
最後一次才見成果。
想必是網路頻寬執行當時速率效益之關係吧!
[attach]21153[/attach]
作者: no3-taco    時間: 2015-6-11 13:26

基本上第二次使用
  1. Do Until .readyState = READYSTATE_COMPLETE: DoEvents: Loop
複製代碼
已經沒有效了,因為程式跑得比較快,會抓到第一次的狀態

只是我想不到有什麼比較完美的解決辦法,處理大量執行時,可以處理延遲的問題
作者: cat9350621    時間: 2015-6-11 23:10

好的 感謝諸位大大 !!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)