<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; vba: не выкладывается xml в Excel]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=13863</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=13863&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «vba: не выкладывается xml в Excel».]]></description>
		<lastBuildDate>Wed, 20 Jun 2018 21:17:44 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: vba: не выкладывается xml в Excel]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=126298#p126298</link>
			<description><![CDATA[<p><strong>vas.crilov</strong>, присоединяюсь к вопросу <strong>alexii</strong>. Для меня тоже не совсем ясна идея, в каком виде Вы хотите вывести информацию на листе, поэтому сделал пример в базовом виде с рекурсивным перебором и выводом <strong>baseName</strong> и <strong>text</strong> и добавил комментарии. Надеюсь это поможет в Вашей задаче.</p><p>Скриншот результата:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p><span class="postimg"><img src="https://i.imgur.com/naCENSl.png" alt="https://i.imgur.com/naCENSl.png" /></span></p></div></div><div class="codebox"><pre><code>
&#039;Создание объекта парсера библиотеки Microsoft XML v6.0
Dim Doc As New MSXML2.DOMDocument60
&#039;Объект для хранения ссылки на активный лист
Dim Sheet As Worksheet

&#039;Главная процедура
Sub Main()
    &#039;Получение ссылки на первый лист активной книги
    Set Sheet = ActiveWorkbook.Sheets(1)
    &#039;Отключение асинхронной загрузки документа
    Doc.async = False
    &#039;Загрузка данных с ресурса с проверкой успешности загрузки
    If Not Doc.Load(&quot;https://websvcgatewayx2.frbny.org/autorates_tomo_external/services/v1_0/tomo/retrieveHistoricalXml?f=06192018&amp;t=06202018&amp;ctt=true&amp;&amp;cta=true&amp;ctm=true&quot;) Then
        Debug.Print &quot;Resource load failed&quot;
        Exit Sub
    End If
    
    With Sheet.Cells
        &#039;Очистка листа
        .ClearContents
        &#039;Заполнение заголовков на листе
        .Item(1, 1) = &quot;BASENAME&quot;
        .Item(1, 2) = &quot;TEXT&quot;
    End With
    &#039;Установка жирного шрифта
    Sheet.Rows(1).Font.Bold = True
    &#039;Передача ссылки на базовый тег документа в процедуру рекурсивного перебора тегов (второй параметр порядковый номер строки с которой начнётся заполнение листа.)
    RecursiveScanNode Doc.DocumentElement, 2
End Sub

&#039;Процедура рекурсивного перебора
Sub RecursiveScanNode(node As MSXML2.IXMLDOMNode, i As Long)  &#039; As MSXML2.IXMLDOMNode)
    &#039;Переменная для итеративного получения ссылки на дочерние элементы переданного node
    Dim ChildNode As IXMLDOMNode
    &#039;Проверка, что текущий элемент является ветвью (а не текстовым блоком, комментарием, или процессинговой инструкцией и т.п.)
    If node.NodeType = NODE_ELEMENT Then
        &#039;Создание записи на листе
        &#039;Получение базового имени элемента
        Sheet.Cells(i, 1) = node.BaseName
        &#039;Получение текста элемента
        Sheet.Cells(i, 2) = GetNodeText(node)
        i = i + 1
        For Each ChildNode In node.ChildNodes
            RecursiveScanNode ChildNode, i
        Next
    End If
End Sub

&#039;Функция получения текста элемента исключая текст дочерних элементов
Function GetNodeText(node As IXMLDOMNode) As String
    Dim ChildNode As IXMLDOMNode
    For Each ChildNode In node.ChildNodes
        If ChildNode.NodeType = NODE_TEXT Then GetNodeText = GetNodeText &amp; ChildNode.Text
    Next
End Function
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Wed, 20 Jun 2018 21:17:44 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=126298#p126298</guid>
		</item>
		<item>
			<title><![CDATA[Re: vba: не выкладывается xml в Excel]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=126276#p126276</link>
			<description><![CDATA[<div class="quotebox"><cite>vas.crilov пишет:</cite><blockquote><div class="codebox"><pre><code>ThisWorkbook.Sheets(1).Cells(1, iCol) = xmlData.BaseName
ThisWorkbook.Sheets(1).Cells(iRow, iCol) = xmlData.Text</code></pre></div></blockquote></div><p>Здесь Вы на первом проходе пишете в одну и ту же ячейку (1;1). Зачем? Куда что на самом деле надо писать?</p><p>Что Вы вообще хотите получить?</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Wed, 20 Jun 2018 13:18:56 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=126276#p126276</guid>
		</item>
		<item>
			<title><![CDATA[vba: не выкладывается xml в Excel]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=126251#p126251</link>
			<description><![CDATA[<p>Пытаюсь загрузить на лист xlsx xml из интернета вот этим кодом</p><div class="codebox"><pre><code>Sub impRRP()

Dim iRow As Integer, iCol As Integer
    Dim xmlDoc As MSXML2.DOMDocument, xmlRoot As MSXML2.IXMLDOMNode
    Dim xmlNodes As MSXML2.IXMLDOMNode, xmlData As MSXML2.IXMLDOMNode
    Set xmlDoc = New MSXML2.DOMDocument
    
    xmlDoc.async = False
    xmlDoc.validateOnParse = False
    xmlDoc.Load (&quot;https://websvcgatewayx2.frbny.org/autorates_tomo_external/services/v1_0/tomo/retrieveHistoricalXml?f=06192018&amp;t=06202018&amp;ctt=true&amp;&amp;cta=true&amp;ctm=true&quot;)

    Set xmlRoot = xmlDoc.DocumentElement
    Set xmlNodes = xmlRoot.FirstChild

    iRow = 0
    For Each xmlNodes In xmlRoot.ChildNodes
        iRow = iRow + 1
        iCol = 0
        For Each xmlData In xmlNodes.ChildNodes
            iCol = iCol + 1
            ThisWorkbook.Sheets(1).Cells(1, iCol) = xmlData.BaseName
            ThisWorkbook.Sheets(1).Cells(iRow, iCol) = xmlData.Text
        Next xmlData
    Next xmlNodes

End Sub</code></pre></div><p>выдает какую то куцую одну строчку. Не могу понять, где ошибка. Помогите пожалуйста.</p>]]></description>
			<author><![CDATA[null@example.com (vas.crilov)]]></author>
			<pubDate>Wed, 20 Jun 2018 07:37:55 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=126251#p126251</guid>
		</item>
	</channel>
</rss>
