Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
'вытаскиваем значение переменной из XML
Function GetXmlElement(xmlCell, iData, sID, NM, PARAM)
Set xmlParser = CreateObject("Msxml2.DOMDocument")
xmlParser.async = False
'xmlParser.Load "D:\my.xml" 'вариант для загрузки из файла
'xmlParser.LoadXML Range("B7").Value 'вариант загрузки из ячейки
xmlParser.LoadXML xmlCell.Value 'загрузка XML введенной переменной xmlCell
'Выбираем нужный нам элемент, который отвечает заданным условиям
Set colNodes = _
xmlParser.SelectNodes("//data[@id='" & iData & "']//row[@" & sID & "='" & NM & "']/@" & PARAM) 'путь
'Перебираем полученную выборку
For Each nodeNode In colNodes
' проверка типа данных и сохранение в нужно типе
If nodeNode.Value Like "####-##-##" = True Then
GetXmlElement = nodeNode.Value 'дата
ElseIf nodeNode.Value Like "*##*" Then
GetXmlElement = Val(nodeNode.Value) 'число
Else
GetXmlElement = CStr(nodeNode.Value) 'строка
End If
Next
End Function