Board logo

標題: [發問] 開ie並定時更新此網頁 [打印本頁]

作者: ggrip    時間: 2021-1-25 10:22     標題: 開ie並定時更新此網頁

大家好

小弟想要打開一個ie,並且每3秒更新這個網頁

但網頁更新1次以後
excel就跳出無法執行巨集timer ie
該巨集可能無法在此活頁簿使用,或已停用所以巨集

推測是timer裡面有引數的關係
但沒有引數,編譯器又會說沒有物件

用application.wait的話我更新網頁以後還要複製貼上EXCEL
這時EXCEL會停住,也不是我要的

請教大家有沒有什麼方法可以讓timer正常運作呢

程式碼如下
  1. Sub 網頁更新()

  2.     Dim ie As Object
  3.     Set ie = CreateObject("InternetExplorer.Application")

  4.     With ie
  5.         .Visible = True
  6.         .navigate "www.google.com.tw"
  7.          Do While .busy Or .readystate <> 4: DoEvents: Loop
  8.     End With
  9.    
  10.     timer ie
  11.    
  12. End Sub


  13. Public Sub timer(ie As Object)'沒有引用IE說沒有物件
  14.    
  15.     With ie
  16.         .Refresh
  17.         Do While .busy Or .readystate <> 4: DoEvents: Loop
  18.     End With
  19.          
  20.     alertTime = Now + TimeValue("00:00:10")
  21.     Application.OnTime alertTime, "timer ie"'引用以後這裡就不行了
  22.    
  23. End Sub
複製代碼

作者: 軒云熊    時間: 2021-1-27 22:11

本帖最後由 軒云熊 於 2021-1-27 22:23 編輯

回復 1# ggrip

有空幫我試試看   感謝
  1. Dim K As Boolean

  2. Public Sub 更新網頁練習()

  3.     Set IE = CreateObject("internetexplorer.application")
  4.         IE.Visible = True
  5.         IE.Navigate "www.google.com.tw"
  6.         Do While IE.readyState <> 4 Or IE.Busy: DoEvents: Loop
  7.         Application.Wait Now + TimeValue("00:00:01")
  8.         Call 計時器
  9.                  
  10. End Sub

  11. Sub 開始計時()
  12.     Application.ScreenUpdating = False
  13.     On Error Resume Next
  14.     Application.OnTime Now + TimeValue("00:00:03"), "計時器"
  15.    
  16.     If K = 1 Then Call 關閉計時器
  17.         Set Sh = CreateObject("Shell.Application")
  18.         For n = Sh.Windows.Count To 1 Step -1
  19.             Set IE = Sh.Windows(n - 1)
  20.             If Right(UCase(IE.FullName), 12) = "IEXPLORE.EXE" Then
  21.                 If IE.document.Url Like "*www.google.com.tw*" Then
  22.                     IE.refresh
  23.                 Exit For
  24.                 End If
  25.             End If
  26.         Next n
  27.         
  28.     On Error GoTo 0
  29.     Application.ScreenUpdating = True
  30. End Sub

  31. Sub 計時器()
  32.     Application.ScreenUpdating = False
  33.     On Error Resume Next
  34.    
  35.         If K <> 1 Then
  36.             Call 開始計時
  37.         Else
  38.             Application.OnTime Now + TimeValue("00:00:01"), "開始計時", schedule:=False
  39.         End If
  40.    
  41.     On Error GoTo 0
  42.     Application.ScreenUpdating = True
  43. End Sub

  44. Sub 關閉計時器()
  45.     Application.ScreenUpdating = False
  46.     On Error Resume Next
  47.     Application.OnTime Now + TimeValue("00:00:01"), "計時器", schedule:=False
  48.    
  49.         Set Sh = CreateObject("Shell.Application")
  50.         For n = Sh.Windows.Count To 1 Step -1
  51.             Set IE = Sh.Windows(n - 1)
  52.             If Right(UCase(IE.FullName), 12) = "IEXPLORE.EXE" Then
  53.                 If IE.document.Url Like "*www.google.com.tw*" Then
  54.                     IE.Quit
  55.                     K = 1
  56.                 Exit For
  57.                 End If
  58.             End If
  59.         Next n
  60.         
  61.     On Error GoTo 0
  62.     Application.ScreenUpdating = True
  63. End Sub
複製代碼
希望有前輩們可以幫我精簡一下 因為程式碼太長了.....想不出來如何精簡...因為小弟還在學習中希望能夠有更好的寫法 萬分感謝
作者: ggrip    時間: 2021-1-28 14:00

謝謝熊大,程式碼可以運作
原來是SHELL的關係,學到了




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