返回列表 上一主題 發帖

[發問] 代碼應該如何撰寫才能忽視 因查詢不到而產生的網頁訊息呢?

回復 2# GBKEE

有改了!但按下去時,vba處會一直出現圈圈,有問題,請G大幫忙
  1. Declare Sub Sleep Lib "kernel32" (ByVal dwMS As Long)
  2. Sub ex()

  3. Set iea = CreateObject("internetexplorer.application")
  4.         With iea
  5.             .Visible = True
  6.             .Navigate "http://www.tdcc.com.tw/smWeb/QryStock.jsp"
  7.             Do Until .ReadyState = 4
  8.                 DoEvents
  9.             Loop
  10.             
  11.              Set x = iea.document.all.tags("option") '查下拉選單
  12.                  x(6).Selected = True '選取該子項目
  13.                        
  14.               iea.document.getElementsByName("StockNo")(0).Value = "6456"
  15.              iea.document.getElementsByName("sub")(0).Click                    '按下查詢鍵
  16.             
  17.              Sleep 2000
  18.             
  19.                 Do While .Busy Or .ReadyState <> 4                             '等候網頁下載完畢
  20.                     DoEvents
  21.                     Application.SendKeys "~", True                '按 ENTER 按鍵 ,預防 "證券代號"有錯誤
  22.                     Sleep 1000
  23.                  Loop
  24.            .Quit
  25.     End With
  26.    

  27. End Sub
複製代碼

TOP

回復 5# GBKEE

我是win7  ie11 就無法抓到

失焦抓不到

TOP

回復  joey0415
ie8 執行沒這問題.
GBKEE 發表於 2015-7-18 05:13


請問版大如果是用我自己寫的範例網頁,我自己是抓不到的,能指點一下嗎?
https://dl.dropboxusercontent.com/u/40393708/test1.htm



TOP

回復 9# azrael19

超級感謝真的可以動了!抓到我要的資料

從你引用的函式來看好像是找到視窗並確認是哪個窗後,送出enter並關閉它

請問一下
Private Const GW_HWNDNEXT = 2
Private Const GW_CHILD = 5
是什麼設定值呢?

謝謝

後來我修改了,送出後要sleep一下,效果會比較好

TOP

回復 11# azrael19

若改成這樣的網頁,雖然可以點擊,但之後卻失焦了,如果重新再往下點擊呢?
謝謝

感謝指點
  1. Sub 點擊()
  2.     Cells.Clear
  3.     Dim lHwndChild&
  4.     Set ie = CreateObject("InternetExplorer.Application")
  5.     With ie
  6.         .Visible = True
  7.         .Navigate "http://www.tdcc.com.tw/smWeb/QryStock.jsp"
  8.         
  9.                 Do While .Busy Or .ReadyState <> 4  '等候網頁下載完畢
  10.                     DoEvents
  11.                  Loop
  12.         Set x = .document.all.tags("option") '查下拉選單
  13.             x(7).Selected = True '選取該子項目
  14.             
  15.             .document.getElementsByName("StockNo")(0).Value = "6456"
  16.             .document.getElementsByName("sub")(0).Click

  17.         Sleep 2000

  18.             lHwndChild = GetWindow(.HWND, GW_CHILD)

  19.               If lHwndChild <> 0 Then
  20.                 Do While lHwndChild
  21.                     SetForegroundWindow .HWND 'HWND is the HWND of the myIEWindow
  22.                     Application.SendKeys "~", True
  23.                     
  24.                     lHwndChild = GetWindow(lHwndChild, GW_HWNDNEXT)
  25.                 Loop
  26.                
  27.                 Sleep 2000
  28.             End If
  29.                         '-------------------以下為失焦處,無法點擊
  30.             Stop
  31.             .document.getElementsByName("StockNo")(0).Value = "1101"
  32.             .document.getElementsByName("sub")(0).Click
  33.             
  34.         Do While .Busy Or .ReadyState <> 4  '等候網頁下載完畢
  35.             DoEvents
  36.          Loop

  37.         Stop
  38.         .Quit
  39.     End With   

  40. End Sub
複製代碼

TOP

回復 13# azrael19

超級感謝您的回答

我有兩台電腦

一台 win7 64位元  office 2010 32位元  IE 11 32位元 不行

一台 win7 64位元  office 2010 32位元  IE 10 32位元 可以

其實抓的方法我會,只是要多學一種

感謝教學相長

TOP

回復 15# azrael19
回覆!這個也可以哦!

我自己發現我這台的ie是11版 64位元的,所以之前的都無效
移除後,雖然 無法改裝成11版 32位元,系統為64位元的
只好用10版的,不過就可以啦

我想一定是ie是11版 64位元的關係,有某些函式不能用

謝謝

有空加個好友

請問  "#32770"  從哪看出來的

TOP

        靜思自在 : 人要知福、惜福、再造福。
返回列表 上一主題