返回列表 上一主題 發帖

[發問] 查找網站資料

謝謝兩位的分享與教導~

TOP

回復 13# joey0415
給你參考
  1. Option Explicit
  2. Sub 股票日報表()                        '查詢單一股票
  3.     Dim 股票代號 As String, 頁數 As String, T As Date
  4.     Do While 股票代號 = ""
  5.         股票代號 = InputBox("股票代號", "輸入查詢之股票代號", "1101")
  6.         If 股票代號 = "" Then End
  7.     Loop
  8.     T = Time
  9.     頁數 = 報表頁數(股票代號)
  10.     If 頁數 <> "" Then
  11.         匯入日報表 股票代號, 頁數
  12.        MsgBox Format(Time - T, "完成 費時 HH:MM:SS")
  13.     Else
  14.         MsgBox "股票代號  " & 股票代號 & " 有誤 !!!"
  15.     End If
  16. End Sub
  17. Private Sub 匯入日報表(股票代號 As String, 頁數 As String)      '參數傳送來的 --股票代號 & 頁數
  18.     Dim Rng As Range
  19.     With ActiveSheet
  20.         If .QueryTables.Count = 0 Then
  21.             With .QueryTables.Add("URL;about:Tabs", .[A1])
  22.                 .Refresh BackgroundQuery:=False
  23.             End With
  24.         End If
  25.         With .QueryTables(1)
  26.             .Connection = "URl;http://bsr.twse.com.tw/bshtm/bsContent.aspx?StartNumber=" & 股票代號 & "&FocusIndex=All_" & 頁數
  27.             .WebFormatting = xlWebFormattingNone
  28.             .WebTables = "4,""table2"""
  29.             .Refresh False
  30.         End With
  31.         Set Rng = .UsedRange.Offset(6)
  32.          With Rng.Columns("A")
  33.             .Replace "序", "=Why", xlWhole
  34.             .SpecialCells(xlCellTypeFormulas, xlErrors).Value = ""
  35.             .SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  36.         End With
  37.         .Cells(1).Select
  38.     End With
  39. End Sub
  40. Private Function 報表頁數(股票代號 As String)   '參數傳送來的 --股票代號
  41.     With CreateObject("InternetExplorer.Application")
  42.             .Navigate "http://bsr.twse.com.tw/bshtm/bsMenu.aspx"
  43.             Do While .Busy Or .readyState <> 4
  44.                 DoEvents
  45.             Loop
  46.             .document.getElementsByName("txtTASKNO").Item(0).Value = 股票代號
  47.             .document.getElementsByName("btnOK")(0).Click
  48.             Do While .Busy Or .readyState <> 4
  49.                 DoEvents
  50.             Loop
  51.             報表頁數 = .document.getElementsByName("sp_ListCount")(0).innertext
  52.             .Quit
  53.     End With
  54. End Function
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 23# GBKEE

讚!謝謝版主用這麼功整的語法,小弟學習啦!

TOP

回復 23# GBKEE

請問GBKEE大
執行時出現錯誤 , 該如何修正呢?

ScreenHunter_02 Aug. 13 22.57.jpg (13.16 KB)

錯誤訊息

ScreenHunter_02 Aug. 13 22.57.jpg

ScreenHunter_02 Aug. 13 22.56.jpg (26.32 KB)

ScreenHunter_02 Aug. 13 22.56.jpg

TOP

本帖最後由 GBKEE 於 2014-8-14 09:41 編輯

回復 25# cadillac
  1. Private Function 報表頁數(股票代號 As String)   '參數傳送來的 --股票代號
  2.     With CreateObject("InternetExplorer.Application")
  3.             .Navigate "http://bsr.twse.com.tw/bshtm/bsMenu.aspx"
  4.             Do While .Busy Or .readyState <> 4
  5.                 DoEvents
  6.             Loop
  7.             '這裡沒錯誤 *****
  8.             .document.getElementsByName("txtTASKNO").Item(0).Value = 股票代號         
  9.          .document.getElementsByName("btnOK")(0).Click    '這裡為何沒錯誤???******
  10.             Do While .Busy Or .readyState <> 4
  11.                 DoEvents
  12.             Loop
  13.             '可以自己 改一改***********
  14.             報表頁數 = .document.getElementsByName("sp_ListCount")(0).innertext
  15.             .Quit
  16.     End With
  17. End Function
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 26# GBKEE 超版

試了好久還是試不出來,
加入.Visible = True 叫出IE查看 , 確認是有查詢到頁碼 , 但是程式就是沒法繼續往下走 , 懇請超版幫幫忙 , 感恩.

ScreenHunter_02 Aug. 14 21.16.jpg (31.25 KB)

程式碼斷點

ScreenHunter_02 Aug. 14 21.16.jpg

ScreenHunter_02 Aug. 14 21.21.jpg (13.4 KB)

錯誤訊息

ScreenHunter_02 Aug. 14 21.21.jpg

ScreenHunter_02 Aug. 14 21.20.jpg (69.93 KB)

IE 檢查元素

ScreenHunter_02 Aug. 14 21.20.jpg

TOP

回復 26# GBKEE 超版

附上檔案
另外請問 "下載一般交易買賣日報表 CSV" , 有機會強制鎖定 "認證碼"數值 , 然後自動填入認證碼進行下載csv檔嗎?

ScreenHunter_02 Aug. 14 21.37.jpg (117.68 KB)

下載一般交易買賣日報表 CSV

ScreenHunter_02 Aug. 14 21.37.jpg

每日交易明細報表Ver 0.1.rar (28.24 KB)

TOP

本帖最後由 GBKEE 於 2014-8-15 06:35 編輯

回復 28# cadillac
網頁設有[認證碼],限制用程式下載.功力不夠破解不了.

你有查出網頁原始碼<span id="sp_ListCount">15</span>
試試看
  1. .document.getElementByID("sp_ListCount").INNERTEXT            
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 29# GBKEE 超版

感謝版大的幫忙 , 程式都可以正常跑完.

另外請教版大在抓取頁數的時候如果出現 "執行階段錯誤13 : 型態不符合"
可以用程式自動確認然後繼續執行嗎?

ScreenHunter_02 Aug. 18 21.04.jpg (13.53 KB)

錯誤訊息

ScreenHunter_02 Aug. 18 21.04.jpg

ScreenHunter_04 Aug. 18 21.04.jpg (32.49 KB)

錯誤畫面

ScreenHunter_04 Aug. 18 21.04.jpg

TOP

回復 30# cadillac
23#不是有防錯機制,附上程式碼看看
  1. If 頁數 <> "" Then
  2.         匯入日報表 股票代號, 頁數
  3.        MsgBox Format(Time - T, "完成 費時 HH:MM:SS")
  4.     Else
  5.         MsgBox "股票代號  " & 股票代號 & " 有誤 !!!"
  6.     End If
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 有願放在心裡,沒有身體力行,正如耕田不播種,皆是空過因緣。
返回列表 上一主題