返回列表 上一主題 發帖

[發問] 處理一定時間 中斷執行

[發問] 處理一定時間 中斷執行

最近在用QueryTable 連網站抓資料

因為有使用到迴圈來處理

所以執行上有點緩慢

有時候如果資料量太大
Excel會跑超久

請問各位大大

能否在執行過程中加入一個經過時間的計算

如果處理時間超過一定時間  則先中斷取消執行

不知能否這樣處理


謝謝
用功到世界末日那一天∼∼∼

回復 2# GBKEE

下方的page_no是用來換頁

因為頁面一次僅能顯示100筆

但有的查詢結果會大於100筆

後來我發現網址中會有個pageoffset
如果pageoffset=100,則會換頁,顯示第101~200筆

所以我的作法用個迴圈讓pageoffset +100
一直換頁到筆數跟上一次一樣,即代表最後一頁了,則停止執行。
  1. Sub Search_Click()

  2.     Dim Key_URL As String
  3.     Dim start_row As Integer
  4.     Dim flag_row As Integer
  5.     Dim page_no As Integer
  6.         
  7.     '多頁切換
  8.     page_no = 0
  9.     '起始欄位
  10.     start_row = 2
  11.    
  12.     '如果一直換頁 換到沒有筆數時 則停止(開始比數=結束比數 未增加)
  13.     Do Until (start_row = flag_row)
  14.    
  15.         start_row = Worksheets("BC Data").Range("C65536").End(xlUp).Row + 1
  16.         
  17.            Key_URL= "URL;http:// *****  & "pageoffset=" & page_no
  18.    
  19.             With Worksheets("BC Data").QueryTables.Add(Connection:=Key_URL, _
  20.                 Destination:=Worksheets("BC Data").Range("A" & start_row))
  21.                 .WebSelectionType = xlSpecifiedTables
  22.                 .WebFormatting = xlWebFormattingNone
  23.                 .WebTables = "5"
  24.                 .WebPreFormattedTextToColumns = True
  25.                 .WebConsecutiveDelimitersAsOne = True
  26.                 .WebSingleBlockTextImport = False
  27.                 .WebDisableDateRecognition = False
  28.                 .WebDisableRedirections = False
  29.                 .Refresh BackgroundQuery:=False
  30.                 .Delete
  31.             End With
  32.    
  33.         '一頁面100筆 執行完換頁
  34.         page_no = page_no + 100
  35.         
  36.         '去標頭
  37.         Worksheets("BC Data").Rows(start_row).Delete
  38.         
  39.         '紀錄最末比
  40.         flag_row = Worksheets("BC Data").Range("C65536").End(xlUp).Row + 1
  41.         
  42.         '如果<100筆 執行一次結束即可
  43.         If Worksheets("BC Data").Range("C65536").End(xlUp).Row < 201 Then Exit Sub
  44.    
  45.     Loop
  46.    
  47. '    Debug.Print page_no
  48.    
  49. End Sub
複製代碼
P.S. 因為是公司內部網站,所以我以*****取代。
用功到世界末日那一天∼∼∼

TOP

回復 4# GBKEE

感謝版大協助 !!!

所以我目前的程式碼

在處理效率上是否還有改善空間呢 ???

謝謝
用功到世界末日那一天∼∼∼

TOP

回復 6# GBKEE

感謝版大幫助

我再想想能否提供相關原始碼

還是局部的原始碼

謝謝
用功到世界末日那一天∼∼∼

TOP

回復 8# GBKEE

請教一下版大

下方是我截取部分跟頁數有關的原始碼

但我不知道該如何抓取總頁數(11)
  1. <SCRIPT LANGUAGE="JavaScript1.1">
  2. <!--
  3. function goToPage(s) {
  4.    var thisForm = window.document.forms[0];
  5.    var page_n = 11;
  6.    var page_range = 100;
  7.    var box_name = "go_to_page" + s;
  8.    var search_link = **********;
  9.    for (var i=0; i < thisForm.elements.length; i++) {
  10.       var nextElement = thisForm.elements[i];
  11.       if (nextElement.name == box_name) {
  12.          go_to_page = nextElement.value;
  13.       }
  14.    }
  15.    if (go_to_page == null || go_to_page == 0) {
  16.       alert("您必須輸入 1 到 11 之間的其中一個頁碼。");
  17.    }
  18.    else if (1 <= go_to_page && go_to_page <= page_n) {
  19.       var offset = (go_to_page - 1) * page_range
  20.       location.href = search_link + offset;
  21.    }
  22.    else {
  23.       alert("您必須輸入 1 到 11 之間的其中一個頁碼。");
  24.    }
  25. }
  26. //end hiding -->
  27. </SCRIPT>
  28. &nbsp;<P><B>
  29. 第 1 頁,共 11 頁<A HREF=**********>>></A>
複製代碼
煩請版大解惑

謝謝!!!
用功到世界末日那一天∼∼∼

TOP

回復 10# GBKEE

對於網站資料的操作好陌生

感謝版大淺顯易懂的說明


版大的作法應該是
先用getElementsByTagName找網頁的標簽名稱
(不過看版大的寫法  是不區分大小寫嗎?)

再抓取夾在標簽裡面的文字(innertext)敘述吧???


謝謝版大!!!
用功到世界末日那一天∼∼∼

TOP

回復 4# GBKEE

請問版大

我後來發現

網址中有個sessionid

會變動= =

變成常常抓不到資料

請問這部分有辦法克服嗎???

感謝!!!
用功到世界末日那一天∼∼∼

TOP

回復 14# GBKEE

版大能否提供文章連結?

我竟然只能搜尋標題@@

不能搜尋全文

謝謝
用功到世界末日那一天∼∼∼

TOP

回復 16# GBKEE

感謝版大協助提供

我再來研究看看

TKS~
用功到世界末日那一天∼∼∼

TOP

        靜思自在 : 【蒙蔽的自由】人常在什麼都可以自由自在的時候,卻被這種隨心所欲的自由蒙蔽,虛擲時光而毫無覺知。
返回列表 上一主題