Board logo

標題: [發問] 2014櫃買改版 [打印本頁]

作者: pbchen    時間: 2014-2-24 17:07     標題: 2014櫃買改版

各位先進好,試著用歷史資料作JS取得資料
2014櫃買改版 一些前輩的心血都不能用了 可惜
可是只能取得表頭,可否指點是哪裡出錯~:)

Sub WEBQ()
    Dim ptxt As String
    Dim yy, stock
    Sheet1.Activate
    If Sheet1.QueryTables.Count = 0 Then
        Sheet1.QueryTables.Add Connection:="URL;", Destination:=Range("A1:E1")
    End If
    yy = InputBox("輸入查詢月份", "國年/月份")
    If yy = "" Then Exit Sub
   
    stock = InputBox("輸入股票代碼", "個股")
    If stock = "" Then Exit Sub
    With Sheet1.QueryTables(1)
        .Connection = "URL;http://www.otc.org.tw/ch/emergingstock/single_historical/result.php"
        .PreserveFormatting = False
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebDisableDateRecognition = True
        .PostText = "ajax=true&input_month=" & yy & "&stk_code=" & stock
        .Refresh False
    End With
End Sub
作者: pbchen    時間: 2014-2-24 17:42

邊想邊發 忘了附件~:)
[attach]17594[/attach]
作者: stillfish00    時間: 2014-2-24 19:31

回復 1# pbchen

.PostText = "ajax=true&input_month=" & yy & "&input_emgstk_code=" & stock
作者: pbchen    時間: 2014-2-24 20:36

回復 3# stillfish00

多謝秒回
不過一直開啟不了家中的 開發人員選項
只能明天再試了 再次感謝~:handshake
作者: joey0415    時間: 2014-2-24 21:44

回復 3# stillfish00
行家一出手,就知有沒有

懂的就知道

雖然我現在不抓了
作者: pbchen    時間: 2014-2-25 09:25

一試即成 多謝太太指教
原來是JS裡面的名稱有誤
分享給有需要的同學
[attach]17596[/attach]


接著開始學下一階段:)
作者: heavenweaver    時間: 2014-2-26 00:45

我也來測試一下,的確可以work!
但是
.WebSelectionType = xlEntirePage
會抓太多不必要的資料
---------------------
Sub WEBQ()
' 興櫃個股歷史行情

    Dim ptxt As String
    Dim yy, stock
    Sheet1.Activate
    If Sheet1.QueryTables.Count = 0 Then
        Sheet1.QueryTables.Add Connection:="URL;", Destination:=Range("A1:E1")
    End If
    'yy = InputBox("輸入查詢月份", "國年/月份")
    yy = "103/02"
    If yy = "" Then Exit Sub
   
    'stock = InputBox("輸入股票代碼", "個股")
   '4990 晶美
    stock = "4990"
    If stock = "" Then Exit Sub

    With Sheet1.QueryTables(1)
        .Connection = "URL;http://www.gretai.org.tw/ch/emergingstock/single_historical/history.php"
        .PreserveFormatting = False
        .WebSelectionType = xlAllTables
        .WebFormatting = xlWebFormattingNone
        .WebDisableDateRecognition = True
        .PostText = "ajax=true&input_month=" & yy & "&input_emgstk_code=" & stock
        .Refresh BackgroundQuery:=False
    End With
'
End Sub
作者: heavenweaver    時間: 2014-2-26 08:42

回復 3# stillfish00
真的很厲害,過去我都看網頁內容怪不得下錯參數,原來是要[檢測網路要求],查看[請求內容]要這樣找才能找到真正的參數。
Thanks!:lol
作者: heavenweaver    時間: 2014-2-26 08:55

回復 5# joey0415
果然都是行家,本來我還在抱怨著為什麼不說清楚一點,原來是自己是笨拙不會用網頁開發工具,花了一點時間才摸到石頭過河,你們都是我的老師呀!
作者: pbchen    時間: 2014-3-5 11:53

請問高手:)
基於原查詢程式WebQ000程式
我又寫了一個自動分頁的程式Addpage000
想實現
1.依名單"list"自動產生"股號別"分頁
2.偵測為每分頁空白後自動貼上資料
請問是哪裡出了錯?
可否指點一下~?
-------------------------

Sub Addpages000()               'OK的自動分頁
Dim ii, yy                     'ii自動數list  yy年/月
Dim stock                      'stock股號與表名
Dim ptxt As String             '連線用
ii = 2                         '起始
yy = 103 / 1                   '先用定數

Do While Worksheets("list").Cells(ii, 1) <> ""
    stock = Worksheets("list").Cells(ii, 1)
    Worksheets.Add
    ActiveSheet.Name = stock
   
    Application.Wait Now + TimeValue("00:00:01")         'wait 1s
   
    ii = ii + 1
Loop
   
End Sub



Sub WebQ000()                                                                'OK的網路查詢

    Dim ptxt As String
    Dim yy, stock
    Dim ii
   
    ii = 2
    yy = 103 / 1
    stock = Worksheets("list").Cells(ii, 1)
   
   
    If Worksheets("list").Cells(ii, 1) = 0 Then
        Worksheets(ii).Selection
        ActiveSheet.QueryTables.Add Connection:="URL;", Destination:=Range("A1")
        .Connection = "URL;http://www.otc.org.tw/ch/emergingstock/single_historical/result.php"
        .PreserveFormatting = False
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebDisableDateRecognition = True
        .PostText = "ajax=true&input_month=" & yy & "&input_emgstk_code=" & stock
        .Refresh False
   
        Application.Wait Now + TimeValue("00:00:01")         'wait 1s
   
         ii = ii + 1
    Else: Exit Sub
    End If
-----------------------------------------------
[attach]17678[/attach]
作者: joey0415    時間: 2014-3-6 08:18

回復 10# pbchen

這個資料量很大,不建議放 excel中,否則過沒幾個月又要換地方

資料庫才是最佳的
作者: pbchen    時間: 2014-3-7 17:44

回復 11# joey0415
:)
請問資料庫是指?
倒也不是要全部股號都看
只是個人用來減少上班被抓包再看股價的東西啦:lol
作者: joey0415    時間: 2014-3-8 10:43

回復 12# pbchen
上市櫃下載的CSV檔,每日約有15~20MB,如果你有一年就有多大容量,而EXCEL基本上是簡單表格處理,要大量的存就要資料庫,我從去年八月至今,就要2G,如果要EXCEL要處理這樣的資料,速度差很多,我自己是放在SQLITE中,當然MYSQL   SQL  SERVER  甲骨文等,都是不錯的選擇,不然就是我自己技巧太差,造成容量巨大
作者: is681003    時間: 2014-3-10 12:23

.PostText = "ajax=true&input_month=" & yy & "&input_emgstk_code=" & stock

應該對吧
作者: pbchen    時間: 2014-3-10 21:05

回復 13# joey0415

了解 巨量資料也是個問題
等於是要學個新語言有點辛苦
我EXCEL VBA就寫的七七八八了
要等有機緣才會再接觸八:)
作者: pbchen    時間: 2014-3-10 21:07

回復 14# is681003


太精簡了 不懂意思?
那段使用起來是OK的
晚回了些~




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