網路城邦
上一篇 回創作列表 下一篇   字體:
[Excel VBA] 抓取外部資料 http://fortune.wls.com.tw
2009/03/21 12:42:34瀏覽31755|回應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 頁  回應文章第一頁 回應文章上一頁 回應文章下一頁 回應文章最後一頁

Jill
第幾個表格?
2009/05/22 16:59

請問要怎麼數表格在網頁中屬於第幾個表格?

是否也要看原始碼呢?

另外想請問如果只想抓表格中的某一個數值而已(不需要抓取整個表格),

例如:http://fortune.wls.com.tw/stock/company/state.cfm?category=C&cate_type=1

中只想抓取年報表中的2008年的"本期產生現金流量",

請問VBA可以做得到嗎?

而且如果想將所有的股票的2008年的"本期產生現金流量"匯整在同一個工作表裡(不只是單一股票的2008年的"本期產生現金流量"),

是否應該要利用迴圈的方式呢?

不好意思...

我也是VBA的初學者,

一堆問題請教您,謝謝您!!!

ThisIsTheWay(WayCheng) 於 2009-05-29 15:34 回覆:
 
像這樣:
http://fortune.wls.com.tw/stock/company/state.cfm?category=C&scode=2341
是抓 "2341" 這一檔的資料,用迴圈以不同股號,就可以取得所有的股票的 ......
你可以把整頁匯入A工作表,然後複製本期現金流量那幾個特定儲存格到B工作表,
然後把 A 工作表上的資料清除,繼續使用它匯入下一筆。
但這當中的 "清除" 需要一些特殊的程式技巧,有點麻煩,也不容易解釋清楚原由。

playzerg2009
在請問大大一下~
2009/04/28 17:23
請問格主~!這邊要怎麼複製你上面的程式碼呀~想來了解看看vba但都沒辦法複製!!!
ThisIsTheWay(WayCheng) 於 2009-05-01 22:49 回覆:
就像一般網頁的複製貼上一樣呀!你是用Firefox 還是 IE 還是什麼瀏覽器?
ThisIsTheWay(WayCheng) 於 2009-05-29 15:36 回覆:
用FireFox 的話,需登入 UDN 才行 (需是城邦的會員)。

playzerg2009
Excel外部匯入
2009/04/28 17:03

找了整整三天我真是像熱鍋上的螞蟻!~
不知道這邊是否可以幫忙一下要如何才能把此網址我所要的匯入進去!
http://yamstock.megatime.com.tw/ ... me1=D2&index1=6

而我想要的匯入的就是中華電信(2412)進出表 跟底下的 卷商 買張 賣張 買超 鎖定率 左右各有一欄!
所以是三欄 中華電信  卷商左  卷商右 這三個剛好有打勾可以選擇匯入!

但是呀我一選擇匯入!就會變成此wab查詢沒有傳回資料,要修改查詢,按[確定],按公式列名稱方塊中的外部資料範圍,然後按[外部資料]工具列上的[編輯查詢]

那麼我在去勾選全網頁 左上 中華電信 卷商左 卷商右 這樣就要勾選四個框選擇匯入!
此時,可以匯入但是確匯入一些我也不需要的東西而資料有點小亂!
我想要的就只有 中華電信(2412) 卷商左右欄 所以勾選那三欄就好了但是怎麼用都用不進去!

問題很多請見諒@@~!
在來就是我匯入 我是想把買張 跟 賣張做一個總算動作~是否可以卷商右欄在做匯入的動作可以移到左找了整整三天我真是像熱鍋上的螞蟻!~
不知道這邊是否可以幫忙一下要如何才能把此網址我所要的匯入進去!
http://yamstock.megatime.com.tw/ ... me1=D2&index1=6

而我想要的匯入的就是中華電信(2412)進出表 跟底下的 卷商 買張 賣張 買超 鎖定率 左右各有一欄!
所以是三欄 中華電信  卷商左  卷商右 這三個剛好有打勾可以選擇匯入!

但是呀我一選擇匯入!就會變成此wab查詢沒有傳回資料,要修改查詢,按[確定],按公式列名稱方塊中的外部資料範圍,然後按[外部資料]工具列上的[編輯查詢]

那麼我在去勾選全網頁 左上 中華電信 卷商左 卷商右 這樣就要勾選四個框選擇匯入!
此時,可以匯入但是確匯入一些我也不需要的東西而資料有點小亂!
我想要的就只有 中華電信(2412) 卷商左右欄 所以勾選那三欄就好了但是怎麼用都用不進去!
欄卷商的下方,這樣才有辦法將全卷商做一個總算動作!
(但是我又有一個疑慮右欄最上方那邊卷商 買超 賣超那一欄如何移除若不能移除那好像也沒辦法跟左右欄併在一起做總算動作)

若上面的可以解決的話那麼我是否可以將excel設定巨集或是exe  
每當我點一下它就可以自動去我所指定的網址抓資料併加以做一個總算動作?

我真的是想到沒辦法了查了好多資料都沒相關問題!

這邊也是人家介紹我來的@@~!

但這邊要用vba!~可是自己不會寫程式-"-想請問有解決方法嘛?

vba初入者應該要怎麼學呀~超想哭的拉!

ThisIsTheWay(WayCheng) 於 2009-05-01 22:44 回覆:
我把程式寫好了,請看這一篇:

從 Yam 天空財金網匯入「券商進出」資料
ThisIsTheWay(WayCheng) 於 2009-05-30 06:43 回覆:
為什麼會急得想哭?這是學校的作業嗎?
頁/共 2 頁  回應文章第一頁 回應文章上一頁 回應文章下一頁 回應文章最後一頁