Если я запускаю этот код из среды IDE VBA, например, нажимая F5 в подпрограмме Test
, мое соединение и анализ xml происходят почти мгновенно.
Sub Test()
Sheet1.Range("4:20000").Clear
Dim con As New msxml2.ServerXMLHTTP60
con.Open "GET", "mySite", False, "username", "password"
con.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
con.send
Dim xmlDoc As msxml2.DOMDocument60
Set xmlDoc = con.responseXML
parseXmlDoc xmlDoc
End Sub
Private Sub parseXmlDoc(xmlDoc As msxml2.DOMDocument60)
Dim r As Integer: r = 3
Dim c As Integer: c = 0
Dim oo As Object
Dim pp As Object
Dim qq As Object
On Error GoTo ErrHandle
With Sheet1
Set oo = xmlDoc.SelectNodes("root/myNode")
For Each pp In oo
r = r + 1
For Each qq In pp.ChildNodes
c = c + 1
.Cells(r, c).Value2 = qq.nodeTypedValue
Next qq
c = 0
Next pp
End With
ErrHandle:
End Sub
Однако, если я добавляю гиперссылка и вызов подпрограммы оттуда, цикл по документу xml занимает около 5 секунд ... Почему это происходит и как я могу это остановить!?
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Select Case Target.Range.Address(False, False)
Case "A1"
Test
End Select
End Sub
Я просто звоню рутина из другого места. У меня нет никаких расчетов на листе, и нет никаких других событий на листе. Как я уже сказал, если я запускаю подпрограмму Test
из моей IDE, она работает за миллисекунды ...