標題:
[發問]
能否同時執行二個巨集程式
[打印本頁]
作者:
conchih
時間:
2011-10-5 11:45
標題:
能否同時執行二個巨集程式
請教各位前輩:
目前使用HTTP抓網路股市資料,1101~9999,需要很多時間(假設4hr)
能否分成二個巨集程式,同時執行
A巨集,抓1101~4999,
B巨集,抓5000~9999
這樣,2hr就可把所有資料抓完
而這A.B巨集程式中,會用到的主要指令
1. 假設
"URL;http://tw.stock.yahoo.com/q/q?s=1101”
2.
Workbooks.Open Filename:=1101
3.
Temp.COPY
ActiveSheet.Paste
StockNo.Select
因為會用到開啟檔案,和COPY&PASTE;所以二個巨集程式在執行時不能A巨集執行COPY時,B巨集剛好PASTE,造成A巨集的資料(1101)貼到B巨集(5000),這種烏龍情形
想請問一下,或有什麼其它方法
千萬別告訴我,換光纖
感恩
作者:
yangtest
時間:
2011-11-14 22:01
回復
1#
conchih
依你的想法,二個巨集同時抓資料會比單一巨集來得快!但是你忽略了『頻寬問題』。假設你的頻寬為2M,單一巨集抓資料時,頻寬為2M;但用兩個巨集一起抓資料時,每個巨集僅能使用1M頻寬(總頻寬還是2M)。所以整體來說速度沒變快,根本的解決方法就是提高頻寬!
作者:
thps51134
時間:
2011-11-15 10:19
本帖最後由 thps51134 於 2011-11-15 10:24 編輯
回復
1#
conchih
在第三步
指定兩邊貼到不同sheet? (避免重複paste)
檢視巨集中有沒有不必要的select跟視點轉換, 給他關掉跟拿掉? (加快速度)
不太正經地回一下,
微觀來看,一顆CPU同時應該只做一件事吧? (雙核以上不討論)
所以不懂為什麼兩個巨集會比較快....甚至快到一倍
不升級網路唷
那再加個RAM會有幫助嗎? :D (只有copy & paste也差沒多少吧XD)
作者:
mark15jill
時間:
2011-11-15 13:06
還有個問題
巨集快捷鍵?
作者:
oobird
時間:
2011-11-15 16:31
1101~9999,需要很多時間(假設4hr)
不會吧?要這麼多時間?
1101~9999中真正有數據的只有945筆
我做同樣的操作只有幾分鐘。
Sub Macro1()
Dim arr(), i%, j%, x, y
t = Timer
ActiveSheet.UsedRange.Offset(1, 0) = ""
For i = 1101 To 9999
With CreateObject("Microsoft.XMLHTTP")
.Open "get", "http://tw.stock.yahoo.com/q/q?s=" & i, False
.send
On Error Resume Next
k = .responsetext
x = Split(Split(k, " href=""/q/bc?s=" & i & "")(1), "<")(0)
If Err.Number = 0 Then
m = m + 1
ReDim Preserve arr(1 To 11, 1 To m)
arr(1, m) = Mid(x, 2)
For j = 1 To 10
y = Split(Split(k, "<td align=""center"" bgcolor=""#FFFfff"" nowrap>")(j), "</")(0)
arr(j + 1, m) = y
Next
arr(6, m) = Split(arr(6, m), ">")(1)
End If
End With
Next
Cells(2, 1).Resize(m, 11) = Application.Transpose(arr)
MsgBox Timer - t
End Sub
複製代碼
作者:
luhpro
時間:
2011-11-17 20:17
回復
1#
conchih
因為牽涉到複製與貼上的動作,
所以你的程式在執行期間應該要把複製與貼上連在一起接續執行.
而若是同時執行兩個巨集的話卻不容易同步彼此的執行時間.(網頁讀取是有可能發生 Delay 的)
所以建議你改採先在背景用另一個瀏覽器視窗讀取新的資料,
然後在原先已讀完資料的瀏覽器視窗執行複製與貼上的動作,
接著輪流在兩個視窗執行上述動作,
這樣就可省讀入網頁的時間.(雖然應該還是省的不多)
不過我倒是建議樓主乾脆去證券商開一個證券帳戶,
他們都會提供看盤軟體的.
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)