|
虽然我不是用于楼主的目的,但根据您的代码,解决了我的问题,先表示十分感谢!
在实际使用当中发现,我照您的代码思路,有的时候正常,有的时候不正常,在有的机器上正常,在有些机器上完全不运行,百思不得其解,逐步排查,发现IE在创建的时候会启动一个进程,在调用navigate的时候又会启动一个进程,会造成获得的句柄不是新开启的那个进程,这时候自然不会正常获得数据,后来想了个笨办法,用shell里的一个属性,获得所有窗口的URL,找出来正确的那个进程句柄,后来再没有出现问题,现贴出来分享一下,希望能找到一个更简洁的办法来解决这个问题。
- Sub GXPX()
- Dim IE, dmt, r, i, j, k
- Set IE = CreateObject("internetexplorer.application")
- Set sh = CreateObject("shell.application")
- On Error Resume Next
- Application.DisplayAlerts = False
- Cells.Clear
- With IE
- .Navigate "https://www.jisilu.cn/data/stock/dividend_rate/#cn"
-
- While IE.ReadyState <> 4 Or IE.Busy
- DoEvents
- Wend
- Do
- For Each eachIE In sh.Windows
- If InStr(1, eachIE.locationURL, "https://www.jisilu.cn/data/stock/dividend_rate/#cn") Then
- Set IE = eachIE
- Exit Do
- End If
- Next eachIE
- Loop
- Set dmt = .Document
- Set r = dmt.All.tags("table")(0).Rows
- For k = 0 To r.Length - 1
- For j = 0 To r(k).Cells.Length - 1
- Cells(k + 1, j + 1) = r(k).Cells(j).innerText
- Next j
- Next k
- End With
- Columns("B:Z").Columns.AutoFit
- IE.Quit
- Set IE = Nothing
- Set dmt = Nothing
- Set r = Nothing
- Set sh = Nothing
- Application.DisplayAlerts = True
- End Sub
复制代码
|
评分
-
1
查看全部评分
-
|