暱稱: joey0415
中學生
- 帖子
- 361
- 主題
- 57
- 精華
- 0
- 積分
- 426
- 點名
- 0
- 作業系統
- win7
- 軟體版本
- 2003,2010
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2010-5-13
- 最後登錄
- 2022-12-8
|
本帖最後由 joey0415 於 2015-1-14 10:14 編輯
回復 6# Scott090
改好了!為了這個又學到東西
不過要花了好多時間- Sub 觀測資料查詢系統()
- ActiveSheet.Cells.Clear
- URLb = "http://e-service.cwb.gov.tw/HistoryDataQuery/index.jsp"
- Set ie = CreateObject("internetexplorer.application")
- ie.Visible = True
- ie.Navigate URLb
- Do While ie.readyState <> 4 Or ie.Busy: DoEvents: Loop
- Application.Wait Now + TimeValue("00:00:01") '等待頁面,過快會找不到資料
- x = ie.document.all.tags("option").Length '查詢select共有幾項
- Stop
- For i = 0 To x '該網頁的option選項從0-35
- '---------,內建的fireevent 的onchange失效,改用調用js的方法--------
- Set evt = ie.document.createEvent("HTMLEvents")
- evt.initEvent "change", True, False
- Set lst = ie.document.getElementById("station") 'option的id是station
- lst.selectedIndex = i '自動循環option的值,找到index
- lst.dispatchEvent evt
- Do While ie.readyState <> 4 Or ie.Busy: DoEvents: Loop
- Application.Wait Now + TimeValue("00:00:01")
- ' Cells(i + 1, 1) = Trim(ie.document.getelementsbytagname("table")(1).innertext)'若找talbe是第一個,但空白過多要處理
- Cells(i + 1, 1) = Trim(ie.document.getelementsbytagname("td")(4).innertext) '若找td是第4個下面亦同
- Cells(i + 1, 2) = Trim(ie.document.getelementsbytagname("td")(5).innertext)
- Cells(i + 1, 3) = Trim(ie.document.getelementsbytagname("td")(6).innertext)
- Cells(i + 1, 4) = Trim(ie.document.getelementsbytagname("td")(7).innertext)
- Cells(i + 1, 5) = Trim(ie.document.getelementsbytagname("td")(8).innertext)
- Cells(i + 1, 6) = Trim(ie.document.getelementsbytagname("td")(9).innertext)
- Next
- ie.Quit
- ActiveSheet.Cells.EntireColumn.AutoFit ' 自動調整欄寬
- End Sub
複製代碼 |
|