Board logo

標題: [發問] 請問此程式在ie8 下可執行,更新至ie11就不能執行,謝謝 [打印本頁]

作者: wufonna    時間: 2018-5-13 09:08     標題: 請問此程式在ie8 下可執行,更新至ie11就不能執行,謝謝

  1. Option Explicit
  2. Dim ie As Object   '模組最頂端 Dim 供這模組的程序使用的變數
  3. Sub AllFile()
  4.     Dim i As Integer, v, Y As Integer, S As String
  5.     Dim z As Integer
  6.     Set ie = CreateObject("internetexplorer.application")   '使用此方式可以免除 "設定引用項目"
  7.     With ie '縮小IE視窗
  8.         .Visible = True
  9.         .Width = 5
  10.         .Height = 5
  11.     End With
  12.     With 工作表1
  13.         Dim AR
  14.            AR = .Range("C1:J1")
  15.           .Range("C:J") = ""
  16.           .Range("C1:J1") = AR
  17.           z = 0
  18.         For i = 2 To .Range("A" & .Rows.Count).End(xlUp).Row
  19.      
  20.            v = .Cells(i, 1).Value
  21.             GetDividend (v)
  22.              .Cells(i, 3).Resize(1, 7).Value = 工作表2.Cells(7, 1).Resize(1, 7).Value

  23.              If 工作表2.Cells(7, 5).Value > 0 Then
  24.                .Cells(i, 10).Value = 1
  25.                z = z + 1
  26.               Else
  27.                .Cells(i, 10).Value = 0
  28.               End If
  29.                             If 工作表2.Cells(7, 5).Value > 0 And 工作表2.Cells(8, 5).Value > 0 And 工作表2.Cells(9, 5).Value > 0 Then 'K(營收連3個月正成長)
  30.                 .Cells(i, 11).Value = 1
  31.               Else
  32.                 .Cells(i, 11).Value = 0
  33.               End If
  34.         Next
  35. '            MsgBox "共有" & z & "家正成長"
  36. .Cells(1, 10).Value = "去年同期年增率" & Split(Date, "/")(1) - 1 & "月份" & .Range("A" & .Rows.Count).End(xlUp).Row & "家共有" & z & "家正成長"
  37.    
  38.     End With
  39.     With ie  'IE視窗最大化
  40.         Application.WindowState = xlMaximized
  41.         .Height = Application.Height
  42.         .Width = Application.Width
  43.         .Quit
  44.     End With
  45. End Sub

  46. Public Function MyFile(v As Integer, i As Integer)
  47.   '   Dim i As Integer, v, Y As Integer, S As String
  48.     Set ie = CreateObject("internetexplorer.application")   '使用此方式可以免除 "設定引用項目"
  49.     With ie '縮小IE視窗
  50.         .Visible = True
  51.         .Width = 5
  52.         .Height = 5
  53.     End With
  54.     With 工作表1
  55.            .Range("C" & v & ":J" & v) = ""
  56. '        .Range("E2").CurrentRegion = ""            '清除工作表1,年度範圍
  57.            v = .Cells(i, 1).Value
  58.             GetDividend (v)
  59.              .Cells(i, 3).Resize(1, 7).Value = 工作表2.Cells(7, 1).Resize(1, 7).Value

  60.              If 工作表2.Cells(7, 5).Value > 0 Then
  61.                .Cells(i, 10).Value = 1
  62. '               z = z + 1
  63.               Else
  64.                .Cells(i, 10).Value = 0
  65.               End If
  66.               If 工作表2.Cells(7, 5).Value > 0 And 工作表2.Cells(8, 5).Value > 0 And 工作表2.Cells(9, 5).Value > 0 Then 'k (營收連3個月正成長)
  67.                 .Cells(i, 11).Value = 1
  68.               Else
  69.                 .Cells(i, 11).Value = 0
  70.               End If
  71.               
  72.     End With
  73.     With ie  'IE視窗最大化、
  74.         Application.WindowState = xlMaximized
  75.         .Height = Application.Height
  76.         .Width = Application.Width
  77.         .Quit
  78.     End With
  79. End Function

  80. Private Sub GetDividend(ByVal ss As String)     '取股利網頁

  81.     Dim rr As String, T As Date, i, ii, k, j, S As Object
  82.     'On Error Resume Next '程式的執行沒有預期的錯誤,此行可不用.
  83.     T = Time
  84. '    rr = "http://dj.mybank.com.tw/z/zc/zch/zch_" & ss & ".asp.htm"
  85.     'rr = "http://www.emega.com.tw/z/zc/zch/zch_" & ss & ".ASP.HTM"
  86. rr = "http://pscnetinvest.moneydj.com.tw/z/zc/zch/zch_" & ss & ".djhtm"
  87.     With ie
  88.         .Navigate rr
  89.         Do While .readyState <> 4                          '等待網頁下載完畢
  90.               DoEvents
  91.               If Time >= T + #12:00:03 AM# Then            '等待3秒
  92.                 DoEvents
  93.                 Application.SendKeys "~"                    '股票代號錯誤,網頁會有訊息,須按確定,才可繼續下面股票代號
  94.                
  95.                 Exit Do
  96.               End If
  97.         Loop
  98.         ''***不是等待8秒 3秒太少會誤錯改8妙 ***
  99.         Do
  100.         Set S = .Document.getElementsByTagName("table")(2) ' 新的 table 4
  101.         Loop Until Not S Is Nothing
  102.         '*** 勝一 沒捉到 ????
  103.         '*** 因程式運行太快 , S Is Nothing, S 尚未指定為.Document.getElementsByTagName("table")(4)
  104.         '*** 程式已經執行下一行, With 工作表2 的程式碼

  105.         With 工作表2
  106.             .UsedRange.Clear
  107.             For i = 0 To S.Rows.Length - 1      '寫入資料
  108.                 k = k + 1
  109.                    '用 On Error Resume Next 使程式繼續執行
  110.                     For ii = 0 To S.Rows(i).Cells.Length - 1  ' S.Rows(i).Cells.Length - 1 才是正確
  111.                     .Cells(k, ii + 1) = S.Rows(i).Cells(ii).innerText
  112.                     DoEvents
  113.                     Next
  114.             Next
  115.         End With
  116.     End With
  117. End Sub
複製代碼

作者: wufonna    時間: 2018-5-13 11:57

回復 1# wufonna


    這是檔案,謝謝
作者: wufonna    時間: 2018-5-28 08:08

回復 1# wufonna


    頂上
在測試模式中就可執行到完,請教大大有遇過相同的嗎,如何解決,謝謝&#128512;




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