返回列表 上一主題 發帖

[發問] CreateObject("InternetExplorer.Application") 執行完有時會無法跳出??

本帖最後由 t8899 於 2014-1-13 15:40 編輯

有時可以跳出??有時又無法跳出??真奇怪.......
仔細觀察,第一次執行為兩個ieplorer.exe 在執行 ??,接下來就一次一個........
我把   .Visible = True  '==> enable
殘留是一個空白的網頁

TOP

回復 2# t8899
On Error Resume Next 的目的??
非必要別這樣使用

TOP

回復 2# t8899
此網頁的程式碼
  1. Option Explicit
  2. Sub timestock()
  3. Application.ScreenUpdating = False
  4.     Dim i As Integer, S As Integer, K As Integer, j As Integer
  5.     Dim Element
  6.     With CreateObject("InternetExplorer.Application")
  7.         '.Visible = True           '可顯示網頁
  8.        .Navigate "http://newmis.twse.com.tw/stock/group.jsp?ex=tse&ind=TIDX#STATISTICS"
  9.         Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
  10.         Set Element = .document.getelementsbytagname("table")
  11.         With Sheets("SHEET5")
  12.            .Cells.Clear
  13.             'For s = 0 To element.Length - 1 '不知此網頁的table內容:請先行測試網頁的完整table內容
  14.             For S = 1 To 3                    '已找出網頁的table內容在 0-3 中
  15.                 For i = 0 To Element(S).Rows.Length - 1
  16.                     K = K + 1
  17.                  For j = 0 To Element(S).Rows(i).Cells.Length - 1   '資料的欄位共6位
  18.                          .Cells(K, j + 1) = Element(S).Rows(i).Cells(j).innerText
  19.                     Next
  20.                Next
  21.             Next
  22.      '       .Cells.EntireColumn.AutoFit            '自動調整欄寬
  23.       '      .Cells.EntireRow.AutoFit               '自動調整列高
  24.         End With
  25.        .Quit
  26.     End With
  27.     Set Element = Nothing
  28.     MsgBox "0K"
  29. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 t8899 於 2014-1-14 09:00 編輯
回復  t8899
此網頁的程式碼
GBKEE 發表於 2014-1-13 17:40

1.此網頁有三個表格,我只要
第二個放入A1及
第三個"股票"欄位放入C5
如何修改?
2.由於我30秒會執行一次此程序
借IE 抓開開關關,似乎較慢...用上樓的程序有時還是會卡住無法關閉?(一直出現"ok"訊息視窗")
是否有其他寫法??

TOP

一直出現"ok"訊息視窗是套入我的巨集的一段
For i = 1 To 10
Dim aaa As Variant
aaa = Sheets("Sheet5").Range("C3")
If IsNumeric(aaa) Then Exit For
If Not IsNumeric(aaa) Then Run "timestock"
Next

TOP

本帖最後由 GBKEE 於 2014-1-14 13:57 編輯

回復 15# t8899
一直出現"ok"訊息視窗??  你是中學生應該會關閉這"ok"視窗.有問題試著自己解決,VBA才會進步.
附上檔案看看
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 t8899 於 2014-1-14 14:48 編輯
回復  t8899
一直出現"ok"訊息視窗??  你是中學生應該會關閉這"ok"視窗.有問題試著自己解決,VBA才會進步. ...
GBKEE 發表於 2014-1-14 13:50

  '  MsgBox "0K"
主要不是MsgBox 的問題,是ie 跳不出來..........
現在又可以跳出來了!
謝謝! 我自己在慢慢找..........
我也有興趣把它找出來!:)

TOP

回復  t8899
一直出現"ok"訊息視窗??  你是中學生應該會關閉這"ok"視窗.有問題試著自己解決,VBA才會進步. ...
GBKEE 發表於 2014-1-14 13:50

我改了一下,是否跟這有關??(紅色部份)
Sub timestock()
Application.ScreenUpdating = False
    Dim i As Integer, S As Integer, K As Integer, j As Integer
    Dim Element
    With CreateObject("InternetExplorer.Application")
        '.Visible = True           '可顯示網頁
       .Navigate "http://newmis.twse.com.tw/stock/group.jsp?ex=tse&ind=TIDX#STATISTICS"
        Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
        Set Element = .document.getelementsbytagname("table")
        With Sheets("SHEET5")
         '  .Cells.Clear
          .Range("A1:F17").ClearContents  
            'For s = 0 To element.Length - 1 '不知此網頁的table內容:請先行測試網頁的完整table內容
            For S = 2 To 3                    '已找出網頁的table內容在 0-3 中
                For i = 0 To Element(S).Rows.Length - 1
                    K = K + 1
               '  For j = 0 To Element(S).Rows(i).Cells.Length - 1   '資料的欄位共6位
                     j=2
                         .Cells(K, j + 1) = Element(S).Rows(i).Cells(j).innerText
                    Next
            '   Next
            Next
     '       .Cells.EntireColumn.AutoFit            '自動調整欄寬
      '      .Cells.EntireRow.AutoFit               '自動調整列高
        End With
       .Quit
    End With
    Set Element = Nothing
  '  MsgBox "0K"
End Sub

TOP

回復 18# t8899
這方向是對的,有進步

  1. For S = 2 To 3                    '找出網頁的table 內容在 0-3 中
  2.   'j=2
  3. IF S=2 Then j=?                '寫下你的條件
  4. IF S=3 Then j=?
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復  t8899
這方向是對的,有進步
GBKEE 發表於 2014-1-14 15:31

   With CreateObject("InternetExplorer.Application")
           .Navigate "http://newmis.twse.com.tw/stock/group.jsp?ex=tse&ind=TIDX#STATISTICS
  .Quit

請問30秒抓一次資料, 抓完無須 quit ,可以改成每隔30秒再繼續抓嗎??(中間做一個循還)
不用一直執行 iexplorer.exe 開開關關???

TOP

        靜思自在 : 一個人不怕錯,就怕不改過,改過並不難。
返回列表 上一主題