Board logo

標題: [發問] 請教如何查詢個股月營收資料 [打印本頁]

作者: leondavinci727    時間: 2015-9-7 14:14     標題: 請教web查詢 沒有傳回資料的問題

請問這3個網址無法使用web查詢,要嘛就是顯示"伺服器忙碌中, 請稍後再查詢..."不然就是"沒有傳回資料"
可是不久前我使用開啟檔案自動更新都還可以,請問有別的方法可以一樣下載資料並在開啟檔案時自動更新嗎?
http://goodinfo.tw/StockInfo/StockIdxDetail.asp?STOCK_ID=%E5%8A%A0%E6%AC%8A%E6%8C%87%E6%95%B8
http://goodinfo.tw/StockInfo/ShowBuySaleChart.asp?STOCK_ID=%E5%8A%A0%E6%AC%8A%E6%8C%87%E6%95%B8&CHT_CAT=DATE
http://goodinfo.tw/StockInfo/ShowBearishChart.asp?STOCK_ID=%E5%8A%A0%E6%AC%8A%E6%8C%87%E6%95%B8&CHT_CAT=DATE
作者: GBKEE    時間: 2015-9-11 11:08

回復 1# leondavinci727

這網頁無法用web查詢.
試試看
  1. Option Explicit
  2. '加權指數 法人買賣超日統計圖- Goodinfo!台灣股市資訊網
  3. Const 法人買賣 = "http://goodinfo.tw/StockInfo/ShowBuySaleChart.asp?STOCK_ID=%E5%8A%A0%E6%AC%8A%E6%8C%87%E6%95%B8&CHT_CAT=DATE"
  4. '加權指數 融資融券餘額日統計圖 - Goodinfo!台灣股市資訊網
  5. Const 融資融券 = "http://goodinfo.tw/StockInfo/ShowBearishChart.asp?STOCK_ID=%E5%8A%A0%E6%AC%8A%E6%8C%87%E6%95%B8&CHT_CAT=DATE"

  6. Sub Ex_台灣股市資訊網()
  7.     Dim i As Integer, b As Object, E As Object, R As Integer, Ar, A As Variant
  8.     Dim ie, Ay(), k As Integer
  9.     Ay = Array(法人買賣, 融資融券)
  10.     'Set ie = CreateObject("InternetExplorer.Application")
  11.     With CreateObject("InternetExplorer.Application")
  12.         .Visible = True
  13.         For k = 1 To 2
  14.             .Navigate Ay(k - 1)
  15.             Do While .Busy Or .readyState <> 4: DoEvents: Loop
  16.             Do
  17.                 Set E = .Document.getElementsByTagName("table")
  18.             Loop While E Is Nothing
  19.             With Sheets(k)
  20.                 .Cells.Clear
  21.                 R = 1
  22.                 'Ar = Array(18, 21, 23, 30) '法人買賣 30,融資融券 29
  23.                 Ar = Array(18, 21, 23, IIf(k = 1, 30, 29))
  24.                 For Each A In Ar
  25.                     For Each b In E(A).Rows
  26.                         For i = 0 To b.Cells.Length - 1
  27.                             .Cells(R, i + 1) = b.Cells(i).innertext
  28.                         Next
  29.                         R = R + 1
  30.                     Next
  31.                     R = R + 1
  32.                 Next
  33.             End With
  34.         Next
  35.         .Quit        '關閉網頁
  36.     End With
  37. End Sub
複製代碼

作者: jack200217    時間: 2015-9-17 20:31     標題: 請教如何查詢個股月營收資料

請問下面網址無法使用web查詢,如何透過VBA更改股號抓取月營收表格資料
再煩請協助幫忙!!謝謝!!
http://goodinfo.tw/StockInfo/ShowSaleMonChart.asp?STOCK_ID=3481
作者: GBKEE    時間: 2015-9-18 07:42

回復 3# jack200217
更新上面的程式碼
  1. Option Explicit
  2. Const 個股月營收 = "http://goodinfo.tw/StockInfo/ShowSaleMonChart.asp?STOCK_ID="
  3. '加權指數 法人買賣超日統計圖
  4. Const 法人買賣 = "http://goodinfo.tw/StockInfo/ShowBuySaleChart.asp?CHT_CAT=DATE&STOCK_ID="
  5. '加權指數 融資融券餘額日統計圖
  6. Const 融資融券 = "http://goodinfo.tw/StockInfo/ShowBearishChart.asp?CHT_CAT=DATE&STOCK_ID="
  7. Sub Ex() 'Goodinfo!台灣股市資訊網
  8.     Dim i As Integer, b As Object, E As Object, R As Integer, Ar, A As Variant
  9.     Dim ie, Ay(), k As Integer, STOCK_ID As String, Msg As Boolean
  10.     Do
  11.         STOCK_ID = InputBox("輸入個股 代號", "個股 代號", 3481)
  12.     Loop Until Val(STOCK_ID) And Len(STOCK_ID) >= 4
  13.     Ay = Array(個股月營收 & STOCK_ID, 法人買賣 & STOCK_ID, 融資融券 & STOCK_ID)
  14.     Set ie = CreateObject("InternetExplorer.Application")
  15.     With ie
  16.         .Visible = True
  17.         For k = 1 To 3
  18.             .Navigate Ay(k - 1)
  19.             Do While .Busy Or .readyState <> 4: DoEvents: Loop
  20.             With .Document.BODY
  21.                 If InStr(.INNERTEXT, "查無") Then
  22.                     Msg = True
  23.                     GoTo Er
  24.                 End If
  25.             End With
  26.             Do
  27.                 Set E = .Document.getElementsByTagName("table")
  28.             Loop While E Is Nothing
  29.             If Sheets.Count < k Then Sheets.Add after:=Sheets(Sheets.Count)
  30.             With Sheets(k)
  31.                 .Cells.Clear
  32.                 R = 1
  33.                 If k = 1 Then           '個股月營收
  34.                     Ar = Array(13, 20)
  35.                 ElseIf k = 2 Then       '法人買賣
  36.                     Ar = Array(19, 22, 24, 31)
  37.                 Else                      '融資融券
  38.                     Ar = Array(19, 22, 24, 30)
  39.                 End If
  40.                 For Each A In Ar
  41.                     For Each b In E(A).Rows
  42.                         For i = 0 To b.Cells.Length - 1
  43.                      '   If InStr(b.Cells(i).INNERTEXT, "資料日期: 無交易資料") Then
  44.                       '      Msg = True
  45.                        '     GoTo Er
  46.                        ' End If
  47.                             .Cells(R, i + 1) = b.Cells(i).INNERTEXT
  48.                         Next
  49.                         R = R + 1
  50.                     Next
  51.                     R = R + 1
  52.                 Next
  53.             End With
  54.         Next
  55. Er:                                   '  Title
  56.       MsgBox Split(.Document.Title, "-")(0) & IIf(Msg, "查無相關資料", " 下載 ok")
  57.         .Quit        '關閉網頁
  58.     End With
  59. End Sub
複製代碼

作者: jack200217    時間: 2015-9-21 13:38

回復 4# GBKEE


了解了,下次會再多加注意!
謝謝版主用心!
作者: kelvnelau1213    時間: 2015-10-14 09:44

回復 4# GBKEE
請問版本,您在抓goodinfo的表格時,會常碰到「伺服器忙碌中, 請稍後再查詢...」的狀況嗎?
有沒有其他的方式可以避開




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)