標題:
[發問]
從公開觀測站抓上市公司EPS
[打印本頁]
作者:
BigDog
時間:
2012-9-29 21:45
標題:
從公開觀測站抓上市公司EPS
大家好
請問執行這程式前8家公司抓EPS都很順,到第九家過後就變的空白,是哪裡出了問題?請各位協助幫忙。
謝謝大家
BigDog
作者:
diabo
時間:
2012-9-30 23:47
回復
1#
BigDog
1. 該WEB SERVER限制一分鐘讀取20次,第21次就會出現「系統流量大,請稍後再查詢!」
2. 加個計數器,讀20次後暫停1分鐘再抓...
作者:
BigDog
時間:
2012-10-1 13:17
回復
2#
diabo
超感謝d大的指導,只是想再請教一個問題,
關於web server如何得知有無載入次數限制,該從哪裡得知?謝謝d大.:loveliness:
作者:
GBKEE
時間:
2012-10-2 08:51
本帖最後由 GBKEE 於 2012-10-2 13:08 編輯
回復
1#
BigDog
全文檢索中搜尋 網路連線
作業系統 Windows NT 且 網路IP 是浮動IP
Sub 練習()
Dim motoSht As Worksheet, sakiSht As Worksheet, sakiRng As Range
Dim motoHani() '宣告變數
Set motoSht = Worksheets("財務分析") '設定個別財務分析工作表
Set sakiSht = Worksheets("上市") '設定儲存全部上市工作表
motoSht.Range("A1:T21") = ""
For Each E In motoSht.Names ' 刪除 QueryTables
E.Delete
Next
'將想要轉寫之儲存格的位置儲存在陣列中
motoHani = Array("C18", "D18", "E18", "H18", "I18", "J18", "M18", "N18", "O18", "T18")
'取得分析結果至上市總表的輸入位置
motoaddress = Array("A1", "f1", "k1", "p1")
motoyear = Array(93, 96, 99, 100)
'取得載入財務分析及年度資料位置
motoRowcon = sakiSht.Range("a1").CurrentRegion.Rows.Count
'取得上市總列數
For i = 2 To motoRowcon
motoSht.Cells(25, 1) = sakiSht.Cells(i, 1)
For x = 0 To 3
RE:
Application.StatusBar = False
With motoSht.QueryTables.Add(Connection:= _
"URL;http://mopsov.twse.com.tw/server-java/t05st22?colorchg=1&off=1&TYPEK=sii&isnew=false&year=" & motoyear(x) & "&co_id=" & motoSht.Range("A25") & "&" _
, Destination:=motoSht.Range(motoaddress(x)))
.Name = _
"t05st22?colorchg=1&off=1&TYPEK=sii&isnew=false&year=100&co_id=1733&"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "4"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
If Application.Count(.ResultRange) = 0 Then '到第九家過後就變的空白
Application.StatusBar = "等候網頁中...."
重啟連線
GoTo RE
End If
End With
Next
For j = 0 To UBound(motoHani)
sakiSht.Cells(i, 25).Offset(0, j).Value = motoSht.Range(motoHani(j)).Value
Next
motoSht.Range("A1:T21") = ""
For Each E In motoSht.Names
E.Delete
Next
Next
'將個別資料帶入上市總表
MsgBox "輸入完畢。"
End Sub
Sub 重啟連線()
' 此程式作用:中斷網路連線再度連線重新取的網路IP,以重新取得 WEB SERVER限制 一分鐘讀取20次
'網路連線 的名稱 adsl 請修改為 你PC 上正確名稱
'res = Shell("rasphone.exe [-d *****]", 1)
res = Shell("rasphone.exe [-d adsl]", 1)
AppActivate res, True
SendKeys "%(U)", True
Application.Wait Now + #12:00:01 AM# '延遲等候程式處裡
SendKeys "%(Y)", True
Application.Wait Now + #12:00:01 AM# '延遲等候程式處裡
SendKeys "%(C)", True
Application.Wait Now + #12:00:01 AM# '延遲等候程式處裡
SendKeys "%(C)", True
Application.Wait Now + #12:00:02 AM# '延遲等候曲程式處裡
End Sub
複製代碼
作者:
BigDog
時間:
2012-10-2 13:02
回復
4#
GBKEE
感謝版大的回覆 , 收下來好好研究一番,謝謝!
作者:
BigDog
時間:
2012-10-4 22:40
回復
4#
GBKEE
motoSht.Range("A1:T21") = ""
請問用在什麼地方?謝謝版大的教導...
作者:
BigDog
時間:
2012-10-4 23:36
回復
4#
GBKEE
另外請問一個問題,為什麼motoSht.Names有這麼多個名字,怎麼產生的?謝謝版大!
For Each E In motoSht.Names ' 刪除 QueryTables
MsgBox E.Name
E.Delete
作者:
GBKEE
時間:
2012-10-5 06:22
回復
7#
BigDog
With motoSht.QueryTables.
Add
(Connection:= "URL;
http://mopsov.twse.com.tw/server-java/t05st22?colorchg=1&off=1&TYPEK=sii&isnew=false&year=
" & motoyear(x) & "&co_id=" & motoSht.Range("A25") & "&" _
,
Destination
:=motoSht.Range(motoaddress(x)))
motoSht.Range("A1:T21") = ""
用以清除 motoSht.Range(motoaddress(x)
.Name
= "t05st22?colorchg=1&off=1&TYPEK=sii&isnew=false&year=100&co_id=1733&"
為什麼motoSht.Names有這麼多個名字
QueryTable Add 產生一名稱
作者:
stillfish00
時間:
2012-10-5 07:02
之前也是都用wait 等待 , 原來還有重新連線網路這種方法去避過喔
偷學到一招~
作者:
BigDog
時間:
2012-10-5 10:00
回復
8#
GBKEE
拍謝!再請問版大一個問題,為什麼要刪除NAME,不刪除執行會有什麼問題嗎?謝謝!
作者:
GBKEE
時間:
2012-10-5 12:17
回復
10#
BigDog
不刪是可以的,只是執行後看看有多少名稱
作者:
BigDog
時間:
2012-10-5 13:01
回復
11#
GBKEE
哈哈!!我有看到了,了解了,謝謝版大的幫忙,讓我獲益良多...
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)