• 156

(不定期更新)使用VBA解決 excel web 查詢無法匯入、匯入太慢的股市資料


snare wrote:
其實轉換是成功的,是...(恕刪)


來人
這個snare太厲害了
請出題考死他

bioleon69 wrote:
來人這個snare太...(恕刪)


對了,師傅
您1樓的也出狀況了...
yahoo今天好像動過
小弟用retry處理
版主您好,今天excel好像不能更新股價了,可以幫忙看一下嗎?感恩
snare wrote:
其實轉換是成功的,是...(恕刪)

感謝snare大,原來還有這回事XD

bioleon69 wrote:
您1樓的也出狀況了...
yahoo今天好像動過...(恕刪)


雖然yahoo反應變慢了一點,但我測試沒問題


snare wrote:
雖然yahoo反應變...(恕刪)


師傅大概沒遇到過~
在某些時段會出錯
頻率過高會連結到400的網址

給其他的朋友參考
小弟目前是這樣解決


For k = firstdata To lastdata
retry:
...
...
...
HTMLsourcecode.body.innerhtml = .responsetext
If Len(.responsetext) < 5000 Then GoTo retry




師傅
想請教
關於程式裡面的某個子程式
Sub DelayTick(tick)
t = Timer
Do While (Timer - t) > tick
Loop
End Sub

有點看不懂這程式意思,delaytick(100)
這個實際上是延遲0.1秒的意思嗎?
bioleon69 wrote:
關於程式裡面的某個子程式

...(恕刪)
有點看不懂這程式意思,delaytick(100)
這個實際上是延遲0.1秒的意思嗎?...(恕刪)


今天測試一下,才發現這是錯的


這是我在(2017-06-20)189樓回答問題時
大概看一下以為的對的,就直接抄printf.tw寫的副程式,不是我寫的

因為0.1秒的時間太短,再加上我的寫法本來就很快,所以一直沒發現是錯的

快一年了,居然沒人發現,我用的是副程式,其實是無效、錯的
我下次還是不要偷懶抄別人的比較好

'=======正確寫法如下=======
Sub Delaytick(setdelay As Single)

Dim StartTime As Double, NowTime As Double
StartTime = Timer * 100
setdelay = setdelay * 100
Do
NowTime = Timer * 100
DoEvents
Loop Until NowTime - StartTime > setdelay

End Sub
'========================

'=========測試方式如下=====

Sub test()

ttt = Timer

DelayTick(0.02)
'直接用秒數就可以,0.02就是0.02秒,最低大約可以到0.007秒
'延遲時間是近似值

Debug.Print Round(Timer - ttt, 3)

End Sub
'========================

189樓之後,Delaytick副程式要改成上面正確的寫法
程式中Delaytick(100),需改成Delaytick(0.1)
也可以自己決定要延遲久一點,或短一點

189樓之後的範例,因為網站特性的關係,就算不改也不影響功能,不理它也可以
有空我在修正189樓之後的文章、檔案內容

(20180402 修正完畢),錯誤的,只有244樓回答問題的文章,328樓範例

snare wrote:
今天測試一下,才發...(恕刪)


能不能請師傅解說一下
這個程式的觀念..XD
主要就是延遲?


bioleon69 wrote:
主要就是延遲?...(恕刪)


是的,讓程式不要跑太快,延遲網站的查詢間隔

  • 156
內文搜尋
X
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 156)
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?