返回列表 上一主題 發帖

[發問] 連接網路抓取資料匯入工作表速度慢?有無辦法改善?

請問此網頁有無辦法匯入excel ?

http://udn.megatime.com.tw/asp/hot/ShortOperate.asp?lcount=20&m=puplim&align=v

TOP

回復 1# t8899
  1. Sub Ex()
  2.     Dim xlVbTable As Object, Ar, R As Integer, C As Integer, i As Variant, Y As Integer
  3.     With CreateObject("InternetExplorer.Application")
  4.         .Visible = True
  5.        .Navigate "http://udn.megatime.com.tw/asp/hot/ShortOperate.asp?lcount=20&m=puplim&align=v"
  6.         Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
  7.         Set xlVbTable = .document.getelementsbytagname("table")
  8.         On Error Resume Next
  9.         With ActiveSheet
  10.             .Cells.Clear
  11.             .Cells(1, 1) = "漲停鎖死股"
  12.             Y = 2
  13.             For Each i In Array(20, 24)
  14.                 If i = 24 Then .Cells(Y, 1) = "跌停鎖死股": Y = Y + 1
  15.                 For R = 0 To xlVbTable(i).Rows.Length - 1
  16.                     For C = 0 To xlVbTable(i).Rows(1).ALL.Length - 1
  17.                         .Cells(Y, C + 1) = xlVbTable(i).Rows(R).Cells(C).innerText
  18.                     Next
  19.                     Y = Y + 1
  20.                 Next
  21.             Next
  22.             .Rows(13).Delete
  23.         End With
  24.        .Quit
  25.     End With
  26. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復  t8899
GBKEE 發表於 2013-9-3 07:59


請問不想看到ie8 出現要刪掉那一行呢?

TOP

回復 3# t8899
討論區裡有許多類似的討論,自己試著刪看看.
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復  t8899
討論區裡有許多類似的討論,自己試著刪看看.
GBKEE 發表於 2013-9-3 10:55

我是改  CreateObject("InternetExplorer.Application") .Visible = FALSE

可以將"跌停鎖死股" 從 J1 開始排嗎??

TOP

本帖最後由 GBKEE 於 2013-9-4 12:37 編輯

回復 5# t8899
多練習一下VBA就會進步(不會並不一定要問人的)
  1. Option Explicit
  2. Sub Ex()
  3.     Dim xlVbTable As Object, Ar, R As Integer, C As Integer, i As Variant, Y As Integer
  4.     Dim t As Date
  5.     t = Time
  6.     With CreateObject("InternetExplorer.Application")
  7.        ' .Visible = True
  8.        .Navigate "http://udn.megatime.com.tw/asp/hot/ShortOperate.asp?lcount=20&m=puplim&align=v"
  9.         Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
  10.         Set xlVbTable = .document.getelementsbytagname("table")
  11.         On Error Resume Next
  12.         With ActiveSheet
  13.             .Cells = ""
  14.             .Cells(1, 1) = "漲停鎖死股"
  15.             For Each i In Array(20, 24)
  16.                 If i = 24 Then .Cells(1, "J") = "跌停鎖死股"
  17.                 Y = 2
  18.                 For R = 0 To xlVbTable(i).Rows.Length - 1
  19.                     For C = 0 To xlVbTable(i).Rows(1).ALL.Length - 1
  20.                         .Cells(Y, C + IIf(i = 20, 1, 10)) = xlVbTable(i).Rows(R).Cells(C).innerText
  21.                         'IIf(i = 20, 1, 10) ->  1:="A", 10:="J"
  22.                     Next
  23.                     Y = Y + 1
  24.                 Next
  25.                 If i = 20 Then .Rows(13).Delete
  26.             Next
  27.         End With
  28.        .Quit
  29.     End With
  30.     MsgBox Application.Text(Time - t, "費時 [ss] 秒")
  31. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 t8899 於 2013-9-3 20:33 編輯

回復 6# GBKEE
謝謝!再請教一下
當我在重新更新後,參照此表的儲存格(貼上連結)有些會出現 #REF!,需重新設定儲存格參照才會恢復正常, 有無辦法解決?
=漲跌停!C12
更新後  ===> =漲跌停!#REF!
Snap1.jpg
2013-9-3 20:24

TOP

本帖最後由 t8899 於 2013-9-3 21:19 編輯

想到一個辦法
直接在您寫的巨集之後加上
Sheets("試算").Range("P3:P56").Value = Sheets("漲跌停").Range("G3:G56").Value
Sheets("試算").Range("O3:O56").Value = Sheets("漲跌停").Range("C3:C56").Value
Sheets("試算").Range("Q3:Q56").Value = Sheets("漲跌停").Range("P3:P56").Value
Sheets("試算").Range("R3:R56").Value = Sheets("漲跌停").Range("L3:L56").Value

TOP

本帖最後由 GBKEE 於 2013-9-4 09:00 編輯

回復 8# t8899
.Cells.Clear 改成->.Cells="" 試試看
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復  t8899
.Cells.Clear 改成->.Cells.="" 試試看
GBKEE 發表於 2013-9-4 07:14


語法錯誤?
Snap1.jpg
2013-9-4 08:54

TOP

        靜思自在 : 要用心,不要操心、煩心。
返回列表 上一主題