Importar XML do Siscomex

Home Fóruns Fórum Excel VBA Importar XML do Siscomex

Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #696
    Randerson Vieira
    Participante

    AMIGOS,bom dia!

    Tenho um conhecimento superficial e desenvolvo pequenos trabalhos em vba e agora tentei desenvolver alguma instrução que permita ler um arquivo XML e coletar os dados de algumas tag’s e popular nas células da planilha. “Não conseguir”
    Alguém poderia me ajudar com essa rotina que leia as tags: numero, data-situacao, nome-situacao, (orgao-anuente, nome-situacao-anuencia) sendo que esses já estão em um outro nível ou lista.

    A tag li-simplificada se repete até 1000 registros.

    Segue o Codigo XML

    <?xml version=”1.0″ encoding=”UTF-8″ ?>
    <resposta-consulta-li versao=”1.0″ xmlns=”http://www.serpro.gov.br/liweb/schema/ResultadoConsultaLoteLiWeb.html&#8221; xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance&#8221; xsi:schemaLocation=”http://www.serpro.gov.br/liweb/schema/ResultadoConsultaLoteLiWeb.html ResultadoConsultaLoteLiWeb.xsd”>
    <identificador-consulta>RET_CONS_LI</identificador-consulta>
    <lista-mensagens-e-erros/>
    <lista-li-simplificada>
    <li-simplificada>
    <numero>19/326598257-2</numero>
    <data-registro>03/10/2019</data-registro>
    <hora-registro>17:14:27</hora-registro>
    <data-situacao>03/10/2019</data-situacao>
    <hora-situacao>17:14:27</hora-situacao>
    <codigo-situacao>01</codigo-situacao>
    <nome-situacao>PARA ANALISE</nome-situacao>
    <data-restricao-embarque/>
    <data-validade-embarque/>
    <data-validade-despacho/>
    <numero-li-substituida>19/3103340-9</numero-li-substituida>
    <numero-li-substitutiva/>
    <lista-anuencias>
    <anuencia>
    <orgao-anuente>DECEX</orgao-anuente>
    <codigo-situacao-anuencia>05</codigo-situacao-anuencia>
    <nome-situacao-anuencia>DEFERIDA</nome-situacao-anuencia>
    </anuencia>
    <anuencia>
    <orgao-anuente>INMETRO</orgao-anuente>
    <codigo-situacao-anuencia>01</codigo-situacao-anuencia>
    <nome-situacao-anuencia>PARA ANALISE</nome-situacao-anuencia>
    </anuencia>
    <anuencia>
    <orgao-anuente>SUFRAMA</orgao-anuente>
    <codigo-situacao-anuencia>05</codigo-situacao-anuencia>
    <nome-situacao-anuencia>DEFERIDA</nome-situacao-anuencia>
    </anuencia>
    </lista-anuencias>
    </li-simplificada>
    <li-simplificada>
    ….
    </li-simplificada>
    <li-simplificada>
    ….
    </li-simplificada>
    </lista-li-simplificada>
    </resposta-consulta-li>

    Tentei apreender com o tópico como “Importar arquivo Xml NF-e para Excel” mas não conseguir.

    Um abraço a todos.

    #698

    Boa noite,

    Na postagem vi que seu código não esta funcionando, o que pode ser são as referencias do seu projeto, entre no VBA Project depois em Ferramentas…>Referencia e procure por Microsoft XML, v6.0 ou v5.0 ou outra referencia disponível na sua biblioteca.

    Utilizando o mesmo aquivo da postagem só substituir a função abaixo:

    Sub LerXml(ByVal strFolderPath As String)
    'Declaração de variaveis de objeto para leitura do XML
    Dim xmlDoc As DOMDocument
    Dim xmlList As IXMLDOMNodeList
    Dim xmlNode As IXMLDOMNode
    
    'Declaração de variaveis diversas para o código
    Dim shtXml As Worksheet
    Dim strXml As String
    Dim x, y, i As Long
    Dim objPasta As FileDialog
    
    'Declaração de variaveis de retorno do XML
    Dim strNumerII As String
    Dim strDtaSitu As String
    Dim strNomSitu As String
    
    'Carregando Planilha
    Set shtXml = ThisWorkbook.Sheets("LerXml")
    
    'Atribuindo caminho do arquivo a variavel
    strXml = strFolderPath
    
    'Carregando o objeto que irá representar o documento XML
    Set xmlDoc = New DOMDocument
    
    'Carregando o arquivo
    xmlDoc.Load (strXml)
    
    'Capturando a ultima linha da planilha
    i = shtXml.Range("A1048576").End(xlUp).Row + 1
    
    'Aqui vamos iniciar a ler os produtos da nota fiscal e carregar as linhas no excel conforme esses produtos
    Set xmlList = xmlDoc.getElementsByTagName("li-simplificada")
    For Each xmlNode In xmlList
    'Capturando dados do xml
    strNumerII = GetNodeValue(xmlNode, "numero-li")
    strDtaSitu = GetNodeValue(xmlNode, "data-situacao")
    strNomSitu = GetNodeValue(xmlNode, "nome-situacao")
    
    'Carregando informações na planilha
    shtXml.Cells(i, 1).Value = strNumerII
    shtXml.Cells(i, 2).Value = strDtaSitu
    shtXml.Cells(i, 3).Value = strNomSitu
    
    'Incrementando a linha
    i = i + 1
    Next
    
    Set shtXml = Nothing
    Set xmlList = Nothing
    Set xmlNode = Nothing
    Set xmlDoc = Nothing
    End Sub

     

Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Você deve fazer login para responder a este tópico.