返回列表 上一主題 發帖

[發問] 請問如何以VBA擷取網站上的資料?

[發問] 請問如何以VBA擷取網站上的資料?

本帖最後由 mnsmrtl 於 2011-4-23 12:11 編輯

如題,我希望在EXCEL輸入股票代碼,然後可以從證交所或是奇摩等網站抓取當日收盤等數據
不過完全不知道從何下手,請各位先進不吝指教,謝謝
不進則退

奇摩網站的網路上有人提供
但是我跟櫃買中心的比對有點差異
不知道原因是什麼
不然那各檔真的是讓人抓的相當好用
上網找一下就有
字典兩各字 還真難理解

TOP

回復 1# mnsmrtl
不一定要VBA

TOP

感謝兩位的回覆,不過我還是希望透過VBA每日擷取
至於網路上找到的檔案,我也有抓到過,不過無法開啟
似乎缺了很多元件,由於我VBA的功力不足,要修改也無從下手
所以想自己學著寫寫看,還請提供建議,謝謝
不進則退

TOP

回復 4# mnsmrtl
  1. Sub 新增查詢()
  2.     Range("A1") = "2610"   '股票代號
  3.     Range("A3").Select
  4.     With ActiveSheet.QueryTables.Add(Connection:= _
  5.         "URL;http://tw.stock.yahoo.com/q/q?s=" & Range("a1"), Destination:=Selection)  '新增查詢
  6.         .FieldNames = True
  7.         .RowNumbers = False
  8.         .FillAdjacentFormulas = False
  9.         .PreserveFormatting = True
  10.         .RefreshOnFileOpen = False
  11.         .BackgroundQuery = True
  12.         .RefreshStyle = xlInsertDeleteCells
  13.         .SavePassword = False
  14.         .SaveData = True
  15.         .AdjustColumnWidth = True
  16.         .RefreshPeriod = 0
  17.         .WebSelectionType = xlSpecifiedTables
  18.         .WebFormatting = xlWebFormattingNone
  19.         .WebTables = "6"
  20.         .WebPreFormattedTextToColumns = True
  21.         .WebConsecutiveDelimitersAsOne = True
  22.         .WebSingleBlockTextImport = False
  23.         .WebDisableDateRecognition = False
  24.         .WebDisableRedirections = False
  25.         .Refresh BackgroundQuery:=False
  26.         .Name = .ResultRange.Cells(3, 1)
  27.     End With
  28.    End Sub
  29. '***** 已新增後查詢後 可修改A1的股票代號 查詢  *****
  30. Sub 更新查詢()
  31.     With Range("A3").QueryTable
  32.         .Connection = "URL;http://tw.stock.yahoo.com/q/q?s=" & Range("a1") '股票代號在[A1]
  33.         .Refresh BackgroundQuery:=False
  34.         .Name = .ResultRange.Cells(3, 1)
  35.     End With
  36. End Sub
複製代碼

TOP

本帖最後由 mnsmrtl 於 2011-4-23 12:14 編輯

感謝版主,經測試後已經ok
另外想再請教,如何只回傳其中一個欄位?
如果該網站變更格式的話,.querytable的子項目是不是要重新修改?
而webtables="6",要怎麼取得?
不進則退

TOP

回復 6# mnsmrtl
另外想再請教,如何只回傳其中一個欄位?
請參考 http://forum.twbts.com/thread-3064-1-2.html

webtables="6",要怎麼取得?




TOP

感謝版主指導~
不進則退

TOP

感謝發文.真的可以用..是否還有同時能抓多檔的方法?

TOP

版主大大你好:
       
   小弟對透過EXCEL取得網頁資料,
一直深深感到興趣但是無法領會及突破困境。
   現想借用此板及板主大大提供的語法。
並取得此網頁的指定位置內容如下:

一、
   網址:http://tw.stock.yahoo.com/d/s/company_1102.html

二、
   取得此網頁的資料表為

獲 利 能 力 (100第2季) 最新四季每股盈餘  最近四年每股盈餘

三、
  小弟有試著直接將下列語法的網址更正
如上的網址但是無法成功。
能請版主大大指點小弟。

感恩大大:


Sub 新增查詢()
    Range("A1") = "2610"   '股票代號
    Range("A3").Select
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://tw.stock.yahoo.com/q/q?s=" & Range("a1"), Destination:=Selection)  '新增查詢
        .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 = "6"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
        .Name = .ResultRange.Cells(3, 1)
    End With
   End Sub
'***** 已新增後查詢後 可修改A1的股票代號 查詢  *****
Sub 更新查詢()
    With Range("A3").QueryTable
        .Connection = "URL;http://tw.stock.yahoo.com/q/q?s=" & Range("a1") '股票代號在[A1]
        .Refresh BackgroundQuery:=False
        .Name = .ResultRange.Cells(3, 1)
    End With
End Sub

TOP

        靜思自在 : 人生不一定球球是好球,但是有歷練的強打者,隨時都可以揮棒。
返回列表 上一主題