問題:
用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
程式重點:
- 法人持股是 corporation.cfm, 六日行情是 quote6day.cfm, 信用交易是 trust.cfm, 這些是從">那個 fortune.wls.com.tw 的網頁上看來的。
- scode 這個參數可從實際操作或從網頁原始碼看出來 。
- .WebSelectionType = xlSpecifiedTables 表示不抓整頁, 只抓頁面上某些表格。
- .WebTables = "7" 表示要抓的是頁面上第7個表格。
- .Name 的內容文字可以自由決定。
- 參考: >抓取台北期交所 (Taifex) 網站提供的資訊(上) ; >抓取台北期交所 (Taifex) 網站提供的資訊(下)