返回列表 上一主題 發帖

[發問] 一個用VBA從網頁取得想要資料的寫法~

請教GBKEE超級版主:
以下網頁的VBA要如何寫
https://tw.futures.finance.yahoo.com/future/options.html?opmr=optionfull&opcm=WTXO&opym=201509
cotton

TOP

回復 25# alantsai777
隔 10 秒自動更新 ?? 這網頁 間隔 5 秒自動更新!!
程式碼複製到一般模組
  1. Option Explicit
  2. Dim IE As Object
  3. Sub Ex_基本市況報導網站()
  4.     Dim A As Object, xDate As Date, EDATE As Date
  5.     Set IE = CreateObject("InternetExplorer.Application")
  6.     With IE
  7.        ' .Visible = True
  8.         .Navigate "http://mis.twse.com.tw/stock/fibest.jsp?stock=3673"
  9.         Do While .Busy Or .readyState <> 4: DoEvents: Loop
  10.     End With
  11.     Ex_副程式
  12. End Sub
  13. Private Sub Ex_副程式()
  14.     Dim A As Object, K As Integer, i As Integer, ii As Integer
  15.     With IE
  16.         Do While .Busy Or .readyState <> 4: DoEvents: Loop
  17.         Set A = .Document.getElementsByTagName("table")(1)
  18.     End With
  19.     With ActiveSheet    '可指定工作表
  20.         .UsedRange.Clear
  21.         K = 1
  22.         For i = 0 To A.Rows.Length - 1
  23.             For ii = 0 To A.Rows(i).Cells.Length - 1
  24.                 .Cells(K, ii + 1) = A.Rows(i).Cells(ii).INNERTEXT
  25.             Next
  26.             K = K + 1
  27.         Next
  28.     End With
  29.     If Time <= #1:30:00 PM# Then   '收盤時間 自行調整
  30.         Application.OnTime Time + #12:00:05 AM#, "Ex_副程式"  '間隔5秒
  31.     Else
  32.         IE.Quit
  33.     End If
  34. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

請問如果網頁每10秒資料變動
如
http://mis.twse.com.tw/stock/fibest.jsp?stock=3673
隔 10 秒自動更新
[上市] 3673 F-TPK(元,交易單位)
最近
成交價        漲跌價差
(百分比)        當盤
成交量        累積
成交量        揭示
買價        揭示
買量        揭示
賣價        揭示
賣量        開盤        最高        最低        說明
200.00        ▲1.50(0.76%)        359        2118        199.50        11        200.00        58        199.50        200.50        198.00       
能否請幫忙告知如何抓 謝謝

TOP

回復 23# GBKEE
G大,感謝您,已經可以跑了,雖然內容有很多我還是不太了解,但您已經給了很大的方向了,感謝唷!

TOP

回復 22# norafang
VBA的經驗值太少了,需多修煉 21# 的程式碼是在說明 Const 陳述式
  1. Option Explicit
  2. Sub Test()
  3.     Dim x, ur As String, IE As Object
  4.     x = Worksheets("sheet1").Range("a1")
  5.   '  Const url As String = "http://jsjustweb.jihsun.com.tw/z/zc/zcl/zcl_AAAA.asp.htm"
  6.    ' MsgBox url
  7.     ur = "http://jsjustweb.jihsun.com.tw/z/zc/zcl/zcl_" & x & ".asp.htm"
  8.    ' MsgBox ur
  9.     Set IE = CreateObject("internetexplorer.application") '使用此方式可以免除 "設定引用項目"
  10.     With IE
  11.         .Visible = False 'True為開啟ie, False為不開啟ie
  12.         .Navigate ur
  13.         Do While .ReadyState <> 4 '等待網頁開啟
  14.             DoEvents
  15.         Loop
  16.         .ExecWB 17, 2 'Select All
  17.         .ExecWB 12, 2 'Copy selection
  18.         With Sheets("Sheet1")
  19.              .Cells.Clear
  20.             '.Cells.Select
  21.             .Range("AA1").Activate
  22.             .PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
  23.                 False, NoHTMLFormatting:=True
  24.         End With
  25.     End With
  26.     Columns("A:B").Delete
  27.     IE.Quit
  28.     MsgBox "資料複製結束"
  29. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 21# GBKEE
G大,謝謝您的耐心指教,依您的方式,我的寫法如下:
有以下幾個問題
1.為何我已指定代號在A1,但帶出表頭,而沒有資料?

2.為何我指定放置位置於Range("AA1").Activate,跑完還是放在A2?
                                                       
Sub Test()
    Dim x, ur As String
    x = Worksheets("sheet1").Range("a1")
    Const url As String = "http://jsjustweb.jihsun.com.tw/z/zc/zcl/zcl_AAAA.asp.htm"
    MsgBox url
    ur = "http://jsjustweb.jihsun.com.tw/z/zc/zcl/zcl_" & x & ".asp.htm"
    MsgBox ur
    Cells.Clear
    Set ie = CreateObject("internetexplorer.application") '使用此方式可以免除 "設定引用項目"
    With ie
        .Visible = False 'True為開啟ie, False為不開啟ie
        .Navigate url
        Do While .ReadyState <> 4 '等待網頁開啟
            DoEvents
        Loop
        .ExecWB 17, 2 'Select All
        .ExecWB 12, 2 'Copy selection
        Sheets("Sheet1").Cells.Select
        Range("AA1").Activate
        ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
                False, NoHTMLFormatting:=True
    End With
    Columns("A:B").Delete
    ie.Quit
    MsgBox "資料複製結束"
End Sub

    煩請G大再幫我看看,謝謝

TOP

回復 20# norafang
你要用IE匯入外部資料是無法用錄製,
功能表指令:資料-> 匯入外部資料,可以用錄製下來修改
19#的問題 要多看看VBA說明的 函數,方法,陳述式,屬性.來了解用法,可百尺竿頭,更近一步.
  1. Option Explicit
  2. 'Const 陳述式 宣告常數 , 其值如字面所示
  3. Sub a()
  4.     Dim x, ur As String
  5.     x = "2022"
  6.     Const url As String = "http://jsjustweb.jihsun.com.tw/z/zc/zcl/zcl_AAAA.asp.htm"
  7.     MsgBox url
  8.     ur = "http://jsjustweb.jihsun.com.tw/z/zc/zcl/zcl_" & x & ".asp.htm"
  9.     MsgBox ur
  10. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

對了,順便再補問一下,類似這種網站,可以用錄製巨集的方式再下去修改嗎?
還是必須依上面大大的寫法下去修改呢?
因為靠自己寫出來,不用每次都靠別人幫忙,謝謝

TOP

回復  white5168
回復  vesperlee
請試試看!
c_c_lai 發表於 2012-5-1 16:42

我把CC大的程式修改我想要股票名稱,但為何會跑出"必須是常數運算式"的錯誤訊息,請問我下面的寫法有錯嗎?
那不然要如何更改自己想要的股票代號呢?
請指教我這個VBA新手,謝謝

Sub a()
    x = Worksheets("sheet1").Range("l1")
    Const url As String = "http://jsjustweb.jihsun.com.tw/z/zc/zcl/zcl_" & x & ".asp.htm"
    Cells.Clear
    Set ie = CreateObject("internetexplorer.application") '使用此方式可以免除 "設定引用項目"
    With ie
        .Visible = False 'True為開啟ie, False為不開啟ie
        .Navigate url
        Do While .ReadyState <> 4 '等待網頁開啟
            DoEvents
        Loop
        .ExecWB 17, 2 'Select All
        .ExecWB 12, 2 'Copy selection
        Sheets("Sheet1").Cells.Select
        Range("A1").Activate
        ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
                False, NoHTMLFormatting:=True
    End With
    Columns("A:B").Delete
    ie.Quit
    MsgBox "資料複製結束"
    End Sub

TOP

G大,
時間那麼久了,我都忘了有問過這個問題,還有勞您費心,真不好意思。謝謝∼

TOP

        靜思自在 : 要批評別人時,先想想自己是否完美無缺。
返回列表 上一主題