Board logo

標題: [發問] 擷取web下拉式表單 [打印本頁]

作者: carzyindex    時間: 2011-3-2 15:57     標題: 擷取web下拉式表單

請問下拉式表單裡面的文字可以擷取出來嗎

有用F12看過了

但是還是不知道該怎麼使用才好
作者: kimbal    時間: 2011-3-2 21:48

表單裡的?
把單裡東西放在SHEET的A1
    Dim Arrlist()
    Arrlist = ComboBox1.List
    Range("A1").Resize(UBound(Arrlist)) = Arrlist
作者: Hsieh    時間: 2011-3-2 23:25

回復 1# carzyindex
以錢櫃KTV網頁為例,門市查詢的下拉選單內容
http://www.cashboxparty.com/ktv/ktv_index.asp
  1. Sub GetWebObj()
  2. Dim MyURL$, Ar()
  3. MyURL = "http://www.cashboxparty.com/ktv/ktv_index.asp"
  4. Set MyIE = Nothing
  5. Set MyIE = CreateObject("InternetExplorer.Application")
  6.             With MyIE
  7.                 .Navigate MyURL
  8.                 Do While .Busy Or .ReadyState <> 4
  9.                     DoEvents
  10.                 Loop
  11.                 .Visible = False
  12.                For i = 0 To .document.all("dept").Options.Length - 1
  13.                ReDim Preserve Ar(i)
  14.                Ar(i) = .document.all("dept").Options(i).innerText
  15.                Next
  16.                .Quit
  17.             End With
  18. MsgBox Join(Ar, Chr(10))
  19. End Sub
複製代碼

作者: carzyindex    時間: 2011-3-2 23:28

回復 2# kimbal


    感謝你的回覆

我是指
http://tw.weather.yahoo.com/

裡面的國際主要都市天氣

洲的下拉式表單

該怎麼從這網站匯入excel

得到亞洲大洋洲歐洲等文字
作者: carzyindex    時間: 2011-3-2 23:30

回復 3# Hsieh


    感謝版大相助會受惠良多
作者: FAlonso    時間: 2011-3-9 14:41

本帖最後由 FAlonso 於 2011-3-9 14:43 編輯

把H大的程式略為修改一下,變成
  1. Sub abc()
  2. Dim myie As SHDocVw.InternetExplorer, myURL As String, ar(), i As Integer

  3. Set myie = CreateObject("internetexplorer.application")
  4. myURL = "http://tw.weather.yahoo.com/"

  5. With myie
  6. .Navigate myURL

  7. Do While .Busy And .ReadyState <> READYSTATE_COMPLETE
  8. DoEvents
  9. Loop

  10. .Visible = False

  11. For i = 0 To .Document.all("select").Options.Length - 1
  12. ReDim Preserve ar(i)
  13. ar(i) = .Document.all("select").Options(i).innertext
  14. Next



  15. Range("A1").Activate
  16. For i = 1 To .Document.all("select").Options.Length - 1
  17. ActiveCell.Value = ar(i)
  18. ActiveCell.Offset(1).Activate
  19. Next

  20. .Quit
  21. End With
  22. End Sub
複製代碼
就行了
不過這個程式第16行不太穩定,有時會出現錯誤91,沒有設定物件變數或with區塊變數,有時成功執行,不知搞什麼鬼
作者: Hsieh    時間: 2011-3-9 20:29

本帖最後由 Hsieh 於 2011-3-11 10:47 編輯

回復 6# FAlonso

直接寫入儲存格,不須先寫入陣列
這重點只是取出下拉選單內容的語法
  1. Sub abc()
  2. Dim myURL As String,i As Integer
  3. Set myie = Nothing
  4. Set myie = CreateObject("internetexplorer.application")
  5. myURL = "http://tw.weather.yahoo.com/"
  6. With myie
  7. .Navigate myURL
  8. .Visible = False
  9. Do While .Busy And .ReadyState <> READYSTATE_COMPLETE
  10. DoEvents
  11. Loop
  12. For i = 0 To .Document.all("select").Options.Length - 1
  13. Cells(i + 1, 1) = .Document.all("select").Options(i).innertext
  14. Next
  15. .Quit
  16. End With
  17. End Sub
複製代碼

作者: FAlonso    時間: 2011-3-9 21:21

回復 7# Hsieh
其實由KTV至奇摩天氣的例子,久不久就有這個問題,不知是系統還是記憶體問題,但不深究了
作者: Hsieh    時間: 2011-3-11 10:44

回復 8# FAlonso


    這個原因可能是因為前一次的myie變數未被卸載所致
所以我在程式開頭就先
Set myie = Nothing
然後再去建立物件
Set myie = CreateObject("internetexplorer.application")
作者: freeffly    時間: 2011-12-4 11:45

回復 9# Hsieh
    請問如果是這種的下拉該怎麼寫?
   http://www.cnyes.com/twstock/incomes/1503.htm
   下面是網頁原始碼
    請問從哪裡改才能抓到別的區間資料?
   如果用excel裡面的從外部匯入資料
    都只能匯入最新的資料就算點到其他區間在匯入資料一樣是最新的不是所選擇的區間
      

        <option selected="selected" value="2011年1~9月">2011年1~9月</option>
        <option value="2011年1~6月">2011年1~6月</option>

        <option value="2011年1~3月">2011年1~3月</option>
        <option value="2010年1~12月">2010年1~12月</option>
        <option value="2010年1~9月">2010年1~9月</option>
        <option value="2010年1~6月">2010年1~6月</option>
        <option value="2010年1~3月">2010年1~3月</option>
        <option value="2009年1~12月">2009年1~12月</option>

        <option value="2009年1~9月">2009年1~9月</option>
        <option value="2009年1~6月">2009年1~6月</option>
        <option value="2009年1~3月">2009年1~3月</option>




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