返回列表 上一主題 發帖

[發問] 跑到一半會卡住~~

[發問] 跑到一半會卡住~~

本帖最後由 power82843 於 2016-12-1 23:09 編輯

test.rar (476.9 KB) 各位先進小弟這個程式跑到一半就會卡住,可否幫我看看問題出在哪,感謝!

回復 14# power82843


被鎖住ip, 應會出現錯誤視窗, 而且也應無法再執行, 除非清除所有的瀏覽歷程及cookie(依以前抓奇摩知識+經驗),
如果是沒有跑完到工作表的最後一筆資料, 應是 End(xlDown)的問題, 遇到空白格就停頓, 改用End(xlUp)即可,
以目前的資枓, End(xlDown) , 第368列[2301 光寶科]就是最後一筆!

For i = 10 To [個股資料!B1].Cells(Rows.Count, 1).End(xlUp).Row
則可以跑到第890列!!!

TOP

回復 10# 准提部林
請問遇到這樣的情況要如何避免?

TOP

本帖最後由 jackyq 於 2016-12-3 18:55 編輯

發現是  QueryTables 積累太多的關係
加上這個就好了

For Each QQ In Worksheets("ROE").QueryTables
QQ.Delete
Next

我看准提部林已經幫你加上 delete
結果還會卡
才會以為是不是被鎖IP
結果加上 delay 後就可以跑完
才會以為真的被鎖 IP

結論: 不砍 QueryTables 用 delay 後就可以跑, 當然比較慢

TOP

執行了三次, 都可以順利跑完:
Xl0000003.rar (288.27 KB)

TOP

本帖最後由 GBKEE 於 2016-12-3 17:02 編輯

回復 8# power82843
3708 上緯投控  沒有資料
  1. Range("C1:C500").Find("股東權益報酬率").Select
複製代碼
卡在這裡是嗎?
試試看
  1. Option Explicit
  2. Sub Ex_ROE()
  3.     Dim Sh(1 To 3) As Worksheet, Rng As Range, i As Integer
  4.     Set Sh(1) = Sheets("個股資料")
  5.     Set Sh(2) = Worksheets("ROE總表")
  6.     Set Sh(3) = Worksheets("ROE")
  7.    
  8.     '***執行本程式碼一次後,可刪除掉兩行星號間的程式碼**
  9.     '*************************************
  10.     '刪除 ROE 頁上QueryTables及 QueryTables.Add所新增的名稱
  11.     'QueryTable過多,名稱過多也是檔案膨大的原因之ㄧ
  12.     With Sh(3)
  13.         For i = .Names.Count To 1 Step -1
  14.             .Names(i).Delete
  15.         Next
  16.         .UsedRange.Clear
  17.         For i = .QueryTables.Count To 1 Step -1
  18.           .QueryTables(i).Delete
  19.        Next
  20.     End With
  21.     '******************************
  22.     With Sh(2)
  23.         .UsedRange.Clear
  24.         .Range("B1") = "++++++++++++++++++++++++++++++++++++++++++++++++++++"
  25.         .Range("B2:J2") = Array("期別", "104", "103", "102", "101", "100", "99", "98", "97")
  26.         .Activate
  27.     End With
  28.     For i = 10 To Sh(1).Range("B281").End(xlDown).Row
  29.         If Sh(1).Range("B" & i) <> "" Then   '非空白儲存格
  30.             With Sh(3).QueryTables.Add(Connection:= _
  31.                 "URL;http://stockchannelnew.sinotrade.com.tw/z/zc/zcr/zcra/zcra_" & Sh(1).Range("B" & i) & ".djhtm", Destination:=Sh(3).Range("B1"))
  32.                 '.Name = "0000000"  '名稱以數字開頭,會自動加上"_" 為 "_0000000"
  33.                 .WebSelectionType = xlSpecifiedTables
  34.                 .WebFormatting = xlWebFormattingNone
  35.                 .WebTables = "1"
  36.                 .WebPreFormattedTextToColumns = True
  37.                 .WebConsecutiveDelimitersAsOne = True
  38.                 .WebSingleBlockTextImport = False
  39.                 .WebDisableDateRecognition = False
  40.                 .WebDisableRedirections = False
  41.                 .Refresh BackgroundQuery:=False
  42.             End With
  43.             With Sh(3).QueryTables(1)
  44.                 Application.StatusBar = i - 9 & " - " & .ResultRange.Range("b2") & "   股東權益報酬率 完成"
  45.                 If .ResultRange.Rows.Count > 5 Then
  46.                     Sh(2).Range("b1").End(xlDown).Offset(1, -1).Resize(, .ResultRange.Columns.Count) = .ResultRange.Rows(16).Value
  47.                     Sh(2).Range("b1").End(xlDown).Offset(, -1) = Sh(1).Range("C" & i)
  48.                     Sh(2).Range("b1").End(xlDown).Offset(, -1).Activate
  49.                 Else
  50.                     Sh(2).Range("b1").End(xlDown).Offset(1) = "查無 " & .ResultRange.Range("b2") & " 財務比率表資料(合併年表)"
  51.                 End If
  52.                 .ResultRange.Clear                 '清除匯入外部的資料
  53.                 Sh(3).Names(.Name).Delete   '刪除自動新增的名稱
  54.                 .Delete                                    '刪除 QueryTable 物件
  55.             End With
  56.         End If
  57.     Next
  58. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 7# power82843


有無跳出錯誤視窗, 及錯誤行的位置,
大部份網頁為防止短時間多次的存取, 會鎖住您的ip, 所以無法完成全部匯入!

TOP

your  ip is locked ..........

TOP

回復 4# GBKEE

GBKEE 您好!
就像下方畫面,跑了100多筆之後就一直卡在這個畫面。

TOP

回復 5# 准提部林

准提部林 大大
您的程式跑起來快很多,但是還是會卡住,如下畫面,可以再幫忙看是什麼問題嗎?感謝!

TOP

        靜思自在 : 道德是提昇自我的明燈,不該是呵斥別人的鞭子。
返回列表 上一主題