Я уже искал здесь много ответов, но, похоже, ни один из них не охватывает мою проблему. Фактически, многие из предложений, приведенных в других ответах, уже реализованы в моем коде.
У меня есть огромный XML-файл, который я должен пройти через, и скорость действительно низкая, около 1 секунды на каждую написанную строку (или на узел). Эта скорость также сохраняется, когда я получаю небольшой образец, например, 82 строки (по 15 столбцов в каждой). Это будет означать 82 основных узла с 15 дочерними узлами в каждом.
Мой код выглядит следующим образом:
Dim wsBase As Worksheet
Dim linEscrita As Long
Dim resp As MSXML2.DOMDocument60
Dim lista As IXMLDOMNodeList
Dim nodeAtual As IXMLDOMNode
Dim childNode As IXMLDOMNode
Dim charIni As Long
Dim charAt As Long
Dim colAtual As Long
Application.ScreenUpdating = False
Set wsBase = Worksheets("Name of worksheet")
Set resp = New DOMDocument60
resp.LoadXML (FunctionForGettingXMLfromWebService)
linEscrita = 2
'name from Node I must find and get child nodes
Set lista = resp.SelectNodes("//node1/node2")
For Each nodeAtual In lista
colAtual = 1
If (nodeAtual.HasChildNodes) Then
For Each childNode In nodeAtual.ChildNodes
wsBase.Cells(linEscrita, colAtual) = childNode.text
colAtual = colAtual + 1
Next childNode
End If
linEscrita = linEscrita + 1
Next nodeAtual
Application.ScreenUpdating = True
Этот код даже очень похож на код, найденный здесь в ответе, и этот ответ дает результаты намного быстрее, чем мой. Это не проблема ПК, как я пытался на других компьютерах. Кто-нибудь прошел через что-то подобное или есть идеи, в чем может быть проблема? XML работает нормально и быстро, когда зацикливается на PHP, поэтому не проблема XML.