網路城邦
上一篇 回創作列表 下一篇   字體:
[Excel VBA] 抓取外部資料 http://fortune.wls.com.tw
2009/03/21 12:42:34瀏覽31087|回應13|推薦2

問題:

用EXCEL抓取外部資料

http://fortune.wls.com.tw/stock/company/trust.cfm

在此網址中有可輸入代碼,希望輸入代碼後可以出現:法人持股、六日行情、信用交易三部份......

解答:

按 Alt+F11 進入 VBE, 插入一個模組, 把底下程式碼全部貼到插入的模組裡。

再按一次 Alt+F11 回到 Excel, 按 Alt+F8 選 GetStoeckInfo 執行它, 就可在工作表裡看到成果。

若要查更多個股, 只需增加 GetStockInfo 裡面的句子即可, 說明如下:

查詢目標: "2330" 指定股號
匯入到那裡: "sheet1" 指定工作表, "A1"指定儲存格


Sub GetStockInfo()

Call 法人持股("2330", "sheet1", "A1")
Call 法人持股("2340", "sheet1", "A35")

Call 六日行情("2330", "sheet2", "A1")
Call 六日行情("2340", "sheet2", "A10")

Call 信用交易("2330", "sheet3", "A1")
Call 信用交易("2340", "sheet3", "A25")

End Sub

Sub 法人持股(stock As String, tsheet As String, tcell As String)
Call GetWls("corporation.cfm", "6,7,8,9", stock, tsheet, tcell)
End Sub
Sub 六日行情(stock As String, tsheet As String, tcell As String)
Call GetWls("quote6day.cfm", "6", stock, tsheet, tcell)
End Sub

Sub 信用交易(stock As String, tsheet As String, tcell As String)
Call GetWls("trust.cfm", "7", stock, tsheet, tcell)
End Sub

Sub GetWls(cfm As String, tbl As String, stock As String, tsheet As String, tcell As String)
    With Worksheets(tsheet).QueryTables.Add(Connection:= _
        "URL;http://fortune.wls.com.tw/stock/company/" & cfm & "?scode=" & stock, _
        Destination:=Worksheets(tsheet).Range(tcell))
        .Name = cfm & "_" & stock
        .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 = tbl
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
End Sub


程式重點:

( 興趣嗜好電腦3C )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=WayCheng&aid=2767134

 回應文章 頁/共 2 頁  回應文章第一頁 回應文章上一頁 回應文章下一頁 回應文章最後一頁

stanley_su
2016/11/09 04:47
您好,看了您的文章 想請問 如果像用JAVA寫的 他的資料是動態的
如http://www.taoyuan-airport.com/chinese/flight_arrival/
這個網站的航班資料要怎麼處理呢
我想要的資料是 當天/全部/第一航廈
我想要下面的所有資料
這總情況要怎麼處理 (w777777752@yahoo.com.tw)


等級:
留言加入好友
想要以巨集利用web擷取機場航班資料
2012/08/31 13:30
各位專家請幫幫忙:
excel2007版想要以巨集利用web擷取機場航班資料,打開excel-資料 -取得外部資料-從web-新增web查詢-貼入網址http://210.241.14.104/chinese/schedule_c.jsp?apio=A&airtype=P&defaultquery=yes&cnid=954-到.此時畫面出現需輸入user& 密碼,登入後便跳入主畫面,選擇航空公司 按查詢同一家航空公司航班list-匯出,再按下一頁匯,出到目前為止沒一次成功請大大教教小弟
需要密碼&user這部分不在該網址該如何處理可否用yahoo信箱登入示範
感激不盡
ThisIsTheWay(WayCheng) 於 2012-11-05 09:30 回覆:

抱歉,我今天才看到您的留言。剛才概略地試了一下,不知道是不是你想要的:

Sub GetFlights()
Dim i, NextRow As Integer
Dim RngStr As String

NextRow = 1

For i = 1 To 36
    RngStr = "A" + Format(NextRow)
    With Worksheets("sheet1").QueryTables.Add(Connection:= _
        "URL;http://210.241.14.104/chinese/schedule_c.jsp?pageindex=" + Format(i) + "&airline=null&area=null&apio=A&airtype=P&st=00:00&et=23:59&apcode=&bcode=null&dayindex=2&cnid=25", _
        Destination:=Worksheets("Sheet1").Range(RngStr))
        .Name = "Flights"
        .FieldNames = False
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = False
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "4" '要抓的是網頁上的第四個表格
        .WebPreFormattedTextToColumns = False
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
    NextRow = NextRow + 11
   
Next i
End Sub


Tony
請問 ~
2011/04/05 01:04
請問 高手 ~
我想 抓取 Yam 個股 成交明細 到 Excel 該如何做?

因為他有 多個  Tables

http://yamstock.megatime.com.tw/asp/stockinfo/ps_pv_time.asp?stockid=1101&name1=D1&index1=2

因為我想把個股成交明細資料一一 抓回計算 !!  謝謝 !!

Tony
tony6175@yahoo.com.tw

qaz
版大您好
2010/11/01 08:01
版大您好
我照著文中所說的複製整段程式碼上去
再選取執行時會出現

執行階段錯誤'9':
陣列索引超出範圍

再按偵錯時,從with worksheets一直到(tcell))這三行會變黃底標示出來
請問一下版大,這狀況有解決的辦法嗎?
第一天開始學VBA,還不是很懂,不好意思,謝謝版大

Chargi
請問一下大大, 外部檔案問題.
2010/08/04 18:04

大大您好!

       我之前有用Excel讀過遊戲的檔案,例如一些.dat檔案是像一些遊戲資料庫的東西,因為我不知道怎麼使用Excel讀取二進位,所以直接當成文字檔讀進來後再轉成16進位卻發現資料會少,所以想請教一下大大,您知道如何讀取二進位嗎?



等級:
留言加入好友
請大大幫忙
2010/01/22 21:14

我想EXCEL VBA抓取台證http://mis.tse.com.tw/Quotes/MarketChart

裡面更新的資料

程式要如何寫和設計



你好
2009/12/27 10:08

   你好在google 收尋 excel 的資料 就看到你的部落格,覺得你很厲害。想請教你一下 

我想在台銀的網頁上 http://rate.bot.com.tw/Pages/Static/UIP005.zh-TW.htm  匯入外部資料

可是匯入的都一整個的網頁  可否只匯入黃金的賣價 在 excel 的a1 然後明天再抓的時候

匯入a2  這樣...的程式要怎麼寫呢 ???感謝


等級:
留言加入好友
To 大大
2009/06/22 21:33

謝謝大大~

如果有興趣的話...我想您可以嘗試在設定一次有關於信任的網站那邊

工具-->網際網路選項--->安全性--->信任的網站

1. 點"網站" 然後將此區域內的所有的網站需要伺服器驗證的打勾取消,之後新增此網頁

2.點"自訂層級"裡面的Active X 都用啟動或提示

3.點"預設等級"改為中或中低

4.點"套用"

我想這四個步驟都有用到應該是可以進入的(我也花了一陣子才進入的)

我再慢慢研究大大的發文吧~ 謝謝!

ThisIsTheWay(WayCheng) 於 2009-07-04 13:43 回覆:
Thanks a lot!


等級:
留言加入好友
大大可否推薦有關與EXCEL VBA的相關書籍
2009/06/11 22:37
大大是否也能夠推薦我如何利用EXCEL的編輯查詢來連結資料庫或外部資料, 以及用EXCEL VBA 抓取外部資料或資料庫的書籍呢? 我看到市面上的書籍似乎都寫得很精簡(我看不太懂).....希望大大能夠分享,  thanks!
ThisIsTheWay(WayCheng) 於 2009-06-22 13:36 回覆:
我沒有看任何相關的書籍,我都是在網路上搜尋,有些值得參考的網站,您可以看我blog首頁推薦連結,其他就是我自己累積下來的知識和經驗 (在腦袋裡)。


等級:
留言加入好友
請問您保險事業發展中心資料是否也可也用VBA抓取?
2009/06/11 22:18

看了幾篇您發表的文章,感覺您滿厲害的,

所以想請問您如下的保險事業發展中心資料是否也可也用VBA抓取?

1.進入http://www.tii.org.tw/fcontent/database/sta_test2/statistics%2005_03_b.asp

2. 點選 (一)壽險統計樞紐分析查詢

3.點選 個人投資型保險商品保費收入

------------------------------------------------------------

我的目的是進入個人投資型保險商品保費收入 後把公司別的欄位拖曳到樞紐分析表上方,使得樞紐分析表為一公司別來分類. 感覺這種網路資料很不一樣,所以真的不知道怎麼用VBA來抓取資料. 可以請您幫忙看看嗎?

PS: 要進入個人投資型保險商品保費收入時必須先安裝好Office Web Component (網頁可下載), IE>工具>網際網路選項>安全性>信任的網站]將http://pivot.tii.org.tw新增至信任的網站,並設定相關ActiveX為提示或啟用即可.

ThisIsTheWay(WayCheng) 於 2009-06-22 13:30 回覆:
真對不起,我疏忽了,今天才看到你的留言。
不曉得是何原因,我始終無法使保發中心這個網頁在我的 IE 裡正常顯示
Web Component 的內容。
但我知道它是要以多維度分析(樞紐分析表)的方式來呈現,它得到的資料是一個包裝好的 data cube, 我不知道在 Excel 要如何抓這樣子的資料。
頁/共 2 頁  回應文第一頁 回應文章上一頁 回應文章下一頁 回應文章最後一頁