Excel Vba

Importar arquivo Xml NF-e para Excel

Neste post vou disponibilizar um arquivo de Excel que importa o Xml NF-e para Excel com o código VBA.

A importação trará apenas as informações definidas no código, que esta desprotegido e pode ser customizado conforme a necessidade de cada um.

Claro que hoje em dia o assunto Xml já é bastante difundido, que os ERP’s já tratam essa importação de forma muito simples e com certeza de forma mais completa. Mas talvez seja útil para algo mais corriqueiro como uma analise simples.

Mas para quem deseja aprender a tratar arquivos Xml com VBA o arquivo pode ser bastante instrutivo e agregar conhecimento, no caso especifico da NF-e é fundamental ter noções tributarias e ler o manual de integração do contribuinte disponível no site do SEFAZ/SP.

Neste código tentei tratar os campos de maior utilização, também tentei tratar a questão das versões possuírem elementos “nós” de xms’s diferentes desde a sua versão inicial até a atual 4.00, mas pode haver diferenças não previstas na estrutura do xml que podem acarretar erros. E peço a ajuda de você caso identifiquem algum erro na execução deixe um comentário que vou tentar avaliar e possivelmente corrigir.

Bom vamos a utilização do arquivo.

O arquivo é muito simples, coloque em uma pasta vários arquivos Xml, abra a planilha e clique no botão “Capturar XML’s”

Selecione a pasta e clique em Ok

O arquivo basicamente vai pegar a pasta selecionar e varrer todos os arquivos dessa pasta, verificando arquivo a arquivo se este tem a extensão Xml, se tem no mínimo um dos elementos obrigatórios e caso essa condições forem atendidas ler o arquivo Xml.

Vejam o resultado, caso tenham qualquer duvida deixem um comentário.

Clique aqui para baixar o arquivo deste post.

 

113 thoughts on “Importar arquivo Xml NF-e para Excel

  • Fabio

    Parabéns Fábio.

    Resposta
    • Fabio Mitsueda

      Obrigado!

      Fiz uma pequena atualização no arquivo para ler também a Base ICMS ST, Valor ICMS ST, CST IPI e Valor do IPI.

      Resposta
      • SILVIO SOARES SILVA

        Bom dia! excelente planilha, agora no vlr do IPI está trazendo % de IPI e vlr no IPI não está trazendo valor

        Resposta
        • Fernando Barreto

          Olá, acho q não é que está mostrando errado, só está formatado errado, clique na célula e mude de percentual para número e veja se bate.

          Resposta
      • Mauricio Avelino

        Fábio, baixei a planilha hoje para teste mas apresentou o mesmo erro que o pessoal relatou com versão office 2016 64bit , tem alguma versão mais nova da planilha ou dica para ajudar na correção ?

        Resposta
      • alexandre ribeiro de souza

        cara tem como incluir um botão para limpar as imformaçoes

        Resposta
        • Anônimo

          Tem sim, codigo abaixo! só mudar para o range que voce usa e inserir o botão de limpar e atribuir essa macro ai

          Sub LimpaNFE()

          ‘Efetua a limpeza de toda a planilha e formatação do Range (B3:B1048576)
          Dim q As Range
          Set q = Range(“B3:B1048576”)
          q.FormatConditions.Delete
          Range(“NFE!A3:N1048576”).ClearContents ‘Limpa Texto.

          End Sub

          Resposta
      • Anônimo

        Boa noite!

        Fabio, pode me ajudar em trazer a coluna de unidade de medida ao lado do CFOP por exemplo? Te agradeço .

        Resposta
  • Rodrigo

    Fabio, estou com um erro na execução da importação: “Erro de compilação: O tipo definido pelo usuário não foi definido”
    Saberia o que pode ser?

    Resposta
    • Fabio Mitsueda

      Rodrigo, bom dia.
      Essa mensagem é um pouco genérica.
      Mas primeiramente o arquivo deve ser um XML NF-e válido com protocolo de autorização e tudo.
      Durante os testes que fiz com alguns xml’s válidos não tive erro.
      Se quiser me enviar o arquivo XML para testar, envie no mitsueda.fabio@gmail. com
      Bom final de semana
      Att
      Fabio Mitsueda

      Resposta
      • Anônimo

        estou com o mesmo problema, vou te enviar no email

        Resposta
  • Renato Dutra

    Fabio, gostei da tabela, mas a minha apresentou o mesmo problema do Rodrigo, ele não encontra o xml na pasta. Abraços.

    Resposta
    • Fabio Mitsueda

      Renato, que estranho. Aqui está funcionando perfeitamente. Qual a versão do seu office? As macros estão habilitadas?
      Abraço.

      Resposta
  • Evandro

    Boa tarde! Aqui estou com o Office 2016 e com macro ativado.

    Ao selecionar a pasta com os XML’s o macro começa a rodar e apresenta o erro já informado aqui “Erro de compilação: O tipo definido pelo usuário não foi definido” e mostra o trecho “Dim xmlDoc As DOMDocument”. E funcionou apenas quando retirei a referencia Microsoft XML 6 para Microsoft XML 5.

    Resposta
    • Fabio Mitsueda

      Isso mesmo Evandro, isso acontece porque eu setei essa versão para utilizar o código, essas dlls são 32 bits, eu tenho nativa na minha maquina a versão 3, 5 e 6. Utilizei a 6 porque era a mais atual na minha maquina, mas pode ter pessoas que não tenha ela instalada, ai essa alteração faz pode resolver, talvez o nome do objeto mude talvez não, mas para quem programa o código pode ajudar na ideia e as adaptações ficam mais fácil. Qualquer duvida estou a disposição.

      Abraço

      Resposta
      • Paulo

        O meu deu esse erro “O tipo definido pelo usuário não foi definido” mas não resolveu com a mudança de versão só aparece outro erro. O primeiro é justamento a variavel “Dim xmlDoc As DOMDocument”. A versão do meu Office é 2016.

        Resposta
    • Olá,
      Como vc fez pra mudar a referencia de Microsoft XML 6 para Microsoft XML 5 ? no meu não existe essa dll da versão 5, só encontrei a da versão 3.0 !

      Obs. Tb estou usando o Office 2016 profissional na versão 64 bits.

      Resposta
  • vinicius

    Olá Fabio, vi que nesta parte do código
    Sub LerXml(ByVal strFolderPath As String)

    ‘Declaração de variaveis de objeto para leitura do XML
    Dim xmlDoc As IXMLDOMDocument

    Estava sem a parte “IXML” antes de DOMDocument, após arrumar isso apareceu outro erro:

    “Erro de compilação: Uso inválido da palavra-chave New”

    Nesta parte do código:

    ‘Carregando o objeto que irá representar o documento XML
    Set xmlDoc = New IXMLDOMDocument

    Consegue verificar?

    Resposta
    • Fabio Mitsueda

      Olá Vinicius, primeiramente desculpe a demora no retorno. Estava com uma demanda muito grande de trabalho e não consegui retornar antes.

      Eu fiz o mesmo teste que você e isso realmente acontece porque são objetos diferentes para que o código funcione corretamente deve deixar a variável declarada como DOMDocument, talvez algumas pessoas tenham erros de execução porque eu utilizei office 2010 e fiz uma referencia a DLL Microsoft XML, v6.0.

      Para verificar se essas referencias estão ativas entre no editor do VBA depois no menu Ferramentas>Referências…

      E verifique se a dll Microsoft XML, v6.0 esta selecionada e não tem a palavra (ausente) na frente do nome, como não tenho outra versão do office para testar fica difícil verificar porque não consigo simular o erro.

      Se tiver qualquer duvida pode entrar em contato comigo no email mitsueda.fabio@gmail.com

      Forte abraço

      Resposta
    • Anderson Dorneles

      Olá,

      Eu mudei um detalhe e pelo esse erro esta solucionado:

      ‘Carregando o objeto que irá representar o documento XML
      Set xmlDoc = CreateObject(“MSXML2.DOMDocument”) <<<< Aqui
      'Set xmlDoc = New IXMLDOMDocument <<<< Não use

      Agora estou tendo problema com a versão da NFe. A minha versão é assim : /nfeProc/NFe/
      /nfeProc/protNFe/

      Já modifiquei mais não funciona : Erro de tempo de de execução 91. A variável do objeto ou Bloco 'With' não foi definida.

      'Versão da NFE
      For i = 0 To xmlDoc.SelectSingleNode("/nfeProc/NFe/protNFe").Attributes.Length – 1
      If LCase(xmlDoc.SelectSingleNode("/nfeProc/NFe/protNFe").Attributes(i).nodeName) = "versao" Then
      strVersao = xmlDoc.SelectSingleNode("/nfeProc/NFe/protNFe").Attributes(i).NodeValue
      Exit For
      End If
      Next

      Alguma ideia do que seja?

      Att,

      Anderson S. Dorneles

      Resposta
  • Sergio

    Uso office 2013 e ainda assim Não importa os xmls com referencia a referencia 6.0 somente com 5.0 também se possível gostaria de pedir se tem como alterar o código para importar as notas agrupando os itens por nota assim teremos as informações completas separadas por notas.

    Resposta
  • Marco Antonio

    Olá, Fábio tudo bem com você?

    Eu encontrei sua planilha ( ótima planilha srrsrs) através do site planilhando.com.br (quando você respondeu um tópico). Eu estava procurando por algo parecido pela internet e acabei indo parar no site.

    Não sei se é possível fazer isso mas, você poderia disponibilizar uma versão dessa planilha que faça a leitura TAMBÉM do campo UNIDADE DE MEDIDA?

    Sua planilha é ótima, porém eu gostaria de saber se é possível você disponibilizar uma versão que faça essa leitura (apenas acrescentar um código para ler o campo UNIDADE DE MEDIDA).

    Ou se talvez você disponibilizar um código para que eu mesmo acrescente essa função (você indica o caminho e eu faço).

    Muito obrigado pela sua atenção.

    Resposta
  • Boa tarde, meu amigo deu certo aqui, mais se tiver algum acento no XML dá erro, sabe como resolver ?

    Resposta
    • Fabio Mitsueda

      Boa noite,

      Eu não consegui simular esse erro para verificar, vocês pode me enviar um xml? Porque não deveria ter erro por esse motivo.

      mitsueda.fabio@gmail.com

      Abraço

      Resposta
  • Robson Curvello

    Tem como fazer uma verificação se o desti é CPF ou CNPJ antes de importar os dados do destinatário?

    Fiz o seguinte vba porem dá error qdo a nfe é para CPF pois muda o nó CNPJ para CPF

    ‘Leitura da Tab dest (Destinatario)
    For Each xmlNode In xmlDoc.getElementsByTagName(“dest”)
    ‘Razão social do Destinatario
    strDesti = xmlNode.SelectNodes(“xNome”)(0).Text
    ‘CNPJ do Destinatario
    strCNPJDest = “” & xmlNode.SelectNodes(“CNPJ”)(0).Text
    ‘Inscrição Estadual do Destinatario
    strIEDest = “‘” & xmlNode.SelectNodes(“IE”)(0).Text
    Next

    Resposta
  • Jonas Glauco Santos

    Bom dia Fábio.

    Sua planinha é perfeita, tenho 2 sugestões:

    1- incluir 2 colunas: VALOR TOTAL DA NOTA (ns1:vNF) e ALÍQUOTA DO IPI (ns1:pIPI);

    2- Não importar informações de xml já mportados, para não duplicar cada vez que importa um novo xml.

    Tem como fazer estes ajustes na planilha ?

    Obrigado.

    Jonas Santos

    Resposta
  • igor.alexander@gmail.com

    Bom dia,

    Cara tambem achei brilhante a planilha! Eu tenho sugestões tb:
    – Criar duas abas: uma com um totalizador informando o emitente, destinatario, valor total da nf, qtd de produtos, qtde de volumes
    – na outra aba especificas os produtos igual vc já faz

    Ficaria perfeita

    Resposta
  • Paulo

    Bom Dia, Fabio

    Gostei muito da ideia de sua planilha, porem quando fui usar ela da um erro “Erro de compilação: O tipo definido pelo usuário não foi definido”, as XML’s da NF-e são válidas e com protocolo de autorização, utilizo Excel 2016 64 bits. o que poderia ser esse erro.

    Resposta
    • Fabio Mitsueda

      Olá Paulo.

      Veja se não prefipr trocar as referências, nos comentarios acima tem um caso semelhands ao seu que foi resolvido trocabdo as referências.

      Resposta
      • VANDERLEI SILVA

        Bom dia. Eu também tentei os ajuste sugerido pelo amigo.

        Alterando para: Set xmlDoc = CreateObject(“MSXML5.DOMDocument”), mas infelizmente não funciona.
        Estou utilizando o Office 2016 com Windows 10 64 btis.
        Já tentei diversas soluções e nenhuma delas funciona.
        Baixei a DLL MSXML5.DLL mas toda vez que tenho que executar, preciso referenciar novamente.
        Será que teria alguma sugestão?

        Agradeço.

        Resposta
  • Ótimo Trabalho. No excel mais novo, no meu caso funcionou, entrar no VB desmarcar a referência Microsoft XML 6 para v4.

    Resposta
  • Caroline

    Oi, não estou conseguindo. Dá o mesmo erro: “Erro de compilação: O tipo definido pelo usuário não foi definido”.

    Resposta
    • Fabio Mitsueda

      Ola Caroline, veja nos comentarios desse post algumas pessoas tem problemas com a versão.

      Resposta
  • Diego

    Olá, bom, muito bom Fábio! Tem previsão pra fazer importando xml de NFC-e?

    Resposta
    • Fabio Mitsueda

      Ola Diego, não pensei em fazer algo para NFC-e, mas a estrutura é basicamente a mesma, temos em também o padrão SAT, eu teria que ler o manual de integração para adaptar o layout isso consome um pouco de tempo. Mas a planilha como esta hoje já lê o xml seria mais uma adaptação de campos. Vou tentar dar uma olhada.

      Forte Abraço

      Resposta
      • Carolina Barros

        Oi, Fábio! Sua planilha me ajudou muito. Obrigada por compartilhar conosco essa ferramenta excelente.

        Você já tem algum arquivo que nos ajude a importar NFCe? Estou com essa dificuldade. Poderia nos ajudar?

        Desde já te agradeço bastante!

        Resposta
  • jeankalli

    vou em capturar xml fabio, e a pasta esta como se estivesse vazia, sem nenhum arquivo, o que pode está acontecendo?

    Resposta
    • Fabio Mitsueda

      Ola Jean, desculpa a demora no retorno, mas estava com uma grande carga de trabalho só agora estou conseguindo ver as msg do site. Bom no seu caso isso é o normal, porque o arquivo não foi feito para ler um arquivo mas sim todos os arquivos daquela pasta sem seleção de arquivo, então basta selecionar a pasta que ele irá ler todos os xmls validos que estiverem nessa pasta.

      Espero que seja isso,

      Forte abraço

      Resposta
  • Patricia Revoredo

    Boa tarde Fabio,
    Não estou conseguir importar, está dando erro de compilação.

    Resposta
  • Manoel Fonseca

    Boa tarde Fábio.
    Interessantíssima a planilha. Estou precisando colocar o peso bruto da NF, mas estou encontrando uma certa dificuldade… tem como me passar o “caminho das pedras”?

    Resposta
    • Manoel Fonseca

      Quebrei a cuca aqui… consegui!!!!

      Resposta
  • Rodrigo Alves

    Mitsueda, bom dia.

    Primeiramente, agradeço pela disponibilização do arquivo (parabéns pela dedicação).

    O VBA apresentou um erro na importação aos arquivos xml “tempo de execução ’91’ A variável do objeto ou a variável do bloco ‘With’ não foi definida”.

    O seu programa chegou a importar três primeiras nfe’s, depois apresentou o erro supracitado e parou. Tentei identificar o que eu poderia atualizar, pois talvez seja meu arquivo que contenha alguma informação que devo inserir na VBA, porem, não consegui e com gentileza, peço sua ajuda no seguinte sentido:

    Com base no que descrevi, você consegue me informar onde devo agir?

    Na tentativa de eu apresentar algo que talvez lhe dê um norte, descrevo parte inicial e final do arquivo ao qual não migrou para planilha:

    O arquivo inicia-se com:

    35

    Finaliza com:

    Desde já agradeço sua atenção.

    Abraços
    Rodrigo Alves

    Resposta
    • Lucas Fausto

      Olá Mitsueda, bom dia!

      Estou com mesmo problema do colega acima…. poderia nos ajudar!

      Excelente planilha ajudaria muito se conseguisse utiliza-la.

      Desde já agradeço atenção.

      Resposta
    • José Inácio Filho

      Comentei a parte de versão NF-E e o IF onde dá erro e no bloco emissão NF-E deixei sem teste de versão e funcionou

      Resposta
      • Anônimo

        José, qual seria o código que ajustou e rodou? Obrigado!

        Resposta
  • Roger Holanda

    Bom dia Amigo,

    Que alteração devo fazer para a planilha impostar xml da versão 4.0?

    Estou criando um planilha que calcule automaticamente o diferencial de alíquota e a sua planilha caiu como uma luva.
    Após a conclusão posso compartilhar com você.

    Parabéns pela planilha, belo trabalho.

    Abraço

    Roger Holanda

    Resposta
  • Milton Ramos

    Boa tarde, Fabio
    Cara que sensacional esse vba que compartilhou com a galera.
    Sou um consultor de ERP e essa planilha caiu muito bem, me ajudou a classificar produtos de diversos fornecedores aqui do meu cliente. Simples e eficaz. Não sou programador, mas conheço tudo de ERP e há mto tempo buscava algo assim para excel.
    Parabéns, meooo!
    Ótimo trabalho
    Abraço, Milton Ramos

    Resposta
  • jeankalli

    Fabio o meu diz processo finalizado, foi feito a leitura de 5 arquivos, porem os arquivos não aparecem na planilha, os macros foram habilitados!

    Resposta
  • Aqui deu o erro: “Erro de compilação: O tipo de usuário não foi definido” e aparece selecionado uma parte do script “xmlDoc As DOMDocument”, o que posso fazer para resolver?

    Resposta
    • Carlos Henrique

      Boa tarde,

      Excelente trabalho!

      Ao importar apresentou o mesmo erro “Erro de compilação: O tipo de usuário não foi definido”

      Poderia me ajudar?

      Resposta
  • Guilherme Gregory

    Mitsueda, a planilha é muito top!
    Parabéns pelo desenvolvimento!

    Estou com um problema na linha nº 121, abaixo:
    ‘Versão da NFE
    For i = 0 To xmlDoc.SelectSingleNode(“/nfeProc/NFe/infNFe”).Attributes.Length – 1
    If LCase(xmlDoc.SelectSingleNode(“/nfeProc/NFe/infNFe”).Attributes(i).nodeName) = “versao” Then
    strVersao = xmlDoc.SelectSingleNode(“/nfeProc/NFe/infNFe”).Attributes(i).NodeValue
    Exit For
    End If
    Next

    Apresentou o erro:
    Erro em tempo de execução ’91’:
    A variável do objeto ou a variável do bloco ‘With’ não foi definida.

    Já pesquisei em vários lugares sobre isso. Já alterei a parte de referências. Mas não dá certo.
    Teria como me dar uma luz aí?

    Muito obrigado. Abraço.

    Resposta
    • Rodrigo

      Ola! Conseguiu resolver esse problema? Estou com a mesma questão aqui.

      Resposta
      • Anônimo

        eu tb mesmo erro aqui

        Resposta
        • Madson Braz

          Este erro ocorre porque a partir de nov/2019 uma chame mudou e não tem mais a “nfeProc”, basta remover e deixar comente “NFe/infNFe”

          Resposta
          • Anderson Dorneles

            Olá,
            Cara, graças a sua ajuda, consegui fazer a planilha funcionar, ela esta digamos 99.99% funcionando, só me ajuda com um detalhe se vc puder … vou explicar.

            Nas notas que eu importei usando a planilha, deu um erro nesta linha :

            ‘CNPJ do emitente
            strCNPJEmi = “‘” & xmlNode.SelectNodes(“CNPJ”)(0).Text

            Verificando o valor da varíavel, indentifiquei a nota (o XML) em questão em emperrou e verifiquei que a nota o CNPJ e/ou CPF estava simplesmente em branco, dai deu esse erro. Dai fiz o seguinte:

            ‘CNPJ do emitente
            If strCNPJEmi “” Then
            strCNPJEmi = “‘” & xmlNode.SelectNodes(“CNPJ”)(0).Text
            Else
            strCNPJEmi = “”
            End If

            Com isso, passou, importou todas as notas (XML´s) com sucesso, mas … da nota em questão com CNPJ / CPF em branco para baixo, ele zerou os dados do CNPJ.

            Resumindo, esse trecho em questão precisa verificar se o campo CNPJ esta ou não em branco. Tem como fazer diferente do que eu fiz acima ?

            Desde já agradeço!

            Anderson Dorneles

          • madson braz

            A sua logica está invertida, se a chave for nula o valor do campo deve ser em branco, se não, preenche com o valor da chave.

          • Anderson Dorneles

            Eu consertei, fiz assim e está funcionando perfeitamente.

            ‘CNPJ do emitente
            If xmlNode.SelectNodes(“CNPJ”)(0).Text
            “” Then
            strCNPJEmi = “‘” & xmlNode.SelectNodes(“CNPJ”)(0).Text
            Else
            strCNPJEmi = “”
            End If

            e TB adicionei um campo da NFe que era nescessário pra mim, o Natureza da operação, agora está tudo OK.

            mesmo assim agradeço.

            Anderson Dorneles

          • Anderson Dorneles

            Eu consertei, fiz assim e está funcionando perfeitamente.

            ‘CNPJ do emitente
            If xmlNode.SelectNodes(“CNPJ”)(0).Text
            “” Then
            strCNPJEmi = “‘” & xmlNode.SelectNodes(“CNPJ”)(0).Text
            Else
            strCNPJEmi = “”
            End If

            e TB adicionei um campo que era nescessário pra mim, o Natureza da operação.

            mesmo assim agradeço.

            Anderson Dorneles

          • Anderson Dorneles

            Eu consertei, fiz assim e está funcionando perfeitamente.

            ‘CNPJ do emitente
            If xmlNode.SelectNodes(“CNPJ”)(0).Text
            diferente de “” Then
            strCNPJEmi = “‘” & xmlNode.SelectNodes(“CNPJ”)(0).Text
            Else
            strCNPJEmi = “”
            End If

            e TB adicionei um campo que era nescessário pra mim, o Natureza da operação.

            mesmo assim agradeço.

            Anderson Dorneles

            P.S o formulário não aceita o operador diferente em VBA e tive que escrever e TB não aceita editar, por publiquei 3 vezes a solução.

  • Lucas Kalisewski

    A planilha é incrível, a única coisa que estou tendo dificuldade é no valor total, ele esta puxando o valor total dos produtos, sem o desconto, como faço para o valor total puxar o total da nota fiscal?

    Ex:
    0.00

    0.00

    0.00

    0.00

    0.00

    0.00

    0.00

    0.00

    5.00

    0.00

    0.00

    1.00

    0.00

    0.00

    0.00

    0.00

    0.00

    0.00

    4.00

    Quando importo, puxa o valor de R$ 5,00 e teria que puxar o valor de R$ 4,00.

    Resposta
  • Carolina Barros

    Oi, Fábio! Sua planilha me ajudou muito. Obrigada por compartilhar conosco essa ferramenta excelente.

    Você já tem algum arquivo que nos ajude a importar NFCe? Estou com essa dificuldade. Poderia nos ajudar?

    Desde já te agradeço bastante!

    Resposta
  • Beatriz Betini

    Ola Fabio, bom dia
    Teria algum código que eu mesma poderia alterar para incluir UNIDADE MEDIDA e o ITEM da NF?
    Obrigada desde ja.

    Resposta
  • Marco Luques

    Fantastico Fabio…..Parabéns.

    Resposta
  • Marcio Junior

    Olá Fábio, primeiramente agradeço muito você ter compartilhado este código-fonte sensacional, eu conheci através de uma colega de trabalho e como programador VB eu consegui adicionar muitos campos e melhorar alguns pontos da sua ferramenta que já era ótima !!! Como por exemplo o tratamento de arquivos não importados, XML canceladas, inutilizadas e cartas de correção, e inserção de diversos campos da NF-e.

    Gostaria de te enviá-la para que você mesmo teste e veja o resultado, criei novos módulos que fazem tratamento de SPED Fiscal, SPED Contribuições, XML de Cupom Fiscal e XML de Notas Fiscais.

    Estou tentando adaptá-la para a biblioteca mais atual, da referência msxml_6.0.dll, mas tive dificuldades no processo e como você que desenvolveu esta parte, queria tirar algumas dúvidas contigo, pois nenhum fórum de programação pôde resolver meu problema.

    Caso seja de seu interesse, entre em contato comigo.

    Resposta
    • carlos gomes

      Boa dia,

      Poderia disponibilizar a planilha com essas alterações?

      Resposta
    • Elcio Brito

      Marcio, Fabio, boa noite!
      Gostaria de compartilhar informações sobre XML no Excel. Também estou desenvolvendo uma versão mais ampla,com possibilidade de importar qualquer campo de Xml (nfe,nfec,cFe), inclusive com formatação especifica (data, texto, valor).
      Na versão atual apenas informando o nome da Tag desejada no cabeçalho da planilha. ex: /ICMS//CST, emit/Cnpj etc. Agora estou trabalhando para poder alterar os dados na planilha e exportar novamente para Xml, tipo alterar o conteúdo das cProd, xProd, QdtCom.
      Caso tenham interesse favor entrar em contato.

      Resposta
    • Gilson Costa

      Olá Marcio e Fabio, sou desenvolvedor e estou trabalhando para adaptar para versão 6.0, acredito que podemos nos ajudar, envie-o para que possamos trocar XP. Abs Gilson

      Resposta
    • Glauber

      Seria possivel disponibilizar para nos aqui do fórum? criar um link no drive para baixarmos.

      Resposta
    • EMANUEL O PANTOJA

      olá, márcio tudo bem?

      Estou aprendendo agora VBA e tenho interesse na sua planilha com novos campos, para aprendizado e aplicação nas minhas atividades.

      desde já agradeço.

      Resposta
  • Gaby Presenthes

    Estou com o arquivo LerXml.xlsm (http://prntscr.com/ov8l0o) , porém não consegue localizar o XML a importar, tentei várias ajustes como informado acima e nada, estou usando o OFFICE 2013, WINDOWS 10. Esse é o erro http://prntscr.com/ov8lob. Caso eu não entre na pasta, deixando somente no diretório essa é a mensagem : http://prntscr.com/ov8m2n. O meu interesse é apenas para pegar a quantidade do produto, seu ean, nome do produto, valor unitário e valor total. Se alguém puder me ajudar agradeço meu e-mail contato@tsmix.com.br

    Resposta
  • Carlos Amaral

    Olá,
    A mim da-me erro Run-time 91.
    Object varialble or with block variable not set
    na linha
    For i = 0 To xmlDoc.SelectSingleNode(“/nfeProc/NFe/infNFe”).Attributes.Length – 1
    Como posso resolver

    Resposta
    • Madson Braz

      remove nfeProc e deixa só “NFe/infNFe” para importar notas emitidas a partir de nov/2019

      Resposta
  • CLAUDIO ANTONIO TAVARES

    A mim da-me erro Run-time 91.
    Object varialble or with block variable not set
    na linha
    For i = 0 To xmlDoc.SelectSingleNode(“/nfeProc/NFe/infNFe”).Attributes.Length – 1
    Como posso resolver

    Resposta
  • Anônimo

    Grande Fabio, obrigado pela força. A exemplo dos colegas acima estou com o mesmo erro 91. Pode nos ajudar?

    ‘Versão da NFE
    For i = 0 To xmlDoc.SelectSingleNode(“/nfeProc/NFe/infNFe”).Attributes.Length – 1
    If LCase(xmlDoc.SelectSingleNode(“/nfeProc/NFe/infNFe”).Attributes(i).nodeName) = “versao” Then
    strVersao = xmlDoc.SelectSingleNode(“/nfeProc/NFe/infNFe”).Attributes(i).NodeValue
    Exit For
    End If
    Next

    Apresentou o erro:
    Erro em tempo de execução ’91’:
    A variável do objeto ou a variável do bloco ‘With’ não foi definida.

    Obrigado!!!

    Resposta
  • Madson Braz

    Sabe informar se qual chave identifica se o destinatário é pessoa fisica ou juridica?

    Outra dúvida, o xml suprime os campos não utilizando, fazendo com que chaves existam em um xml e em outro não, como por exemplo “enderDest/email” se o campo não form preenchido essa chave é suprimida no xml. Como faço para testar se a chave existe?

    Resposta
  • Andreia Freitas

    Pessoal, alguém tem a versão atualizada dessa planilha?

    Resposta
  • roberto a jesus

    alguem tem essa planilha tualizada?

    Resposta
  • Anderson Dorneles

    Olá,
    Consegui fazer a planilha funcionar, quem tiver interesse, vou deixar nesse link para download!

    https://drive.google.com/open?id=1NecK_isyvVsHeUudP8N0eyOheI1fKNsw

    Queria pedir a ajuda pra resolver dois problemas que pretendo fazer na planilha na forma de melhorias:

    1 – Pretendo deixar essa funcionalidade como sendo um complemento do Excel, ou seja, assim que abrir o Excel, vai ter um icone na propria janela do Excel (importar XML´s). Encontrei algumas problemas pra fazer isso, dentre eles não consegui criar uma aba nova usando o código ja existente, esse código :

    Sub CriaAbaNova()
    Dim novaAba As String
    ‘———- cria aba nova ———————————-‘
    Sheets.Add After:=Sheets(Sheets.Count)
    novaAba = “XML”
    ActiveSheet.Name = novaAba
    Sheets(novaAba).Select
    ‘————————————————————‘

    Não funciona, não cria a aba. nova. A ideia era de criar a aba (XML) e criar a formatação do cabeçaho (emitente, CNPJ, Regime tributário e etc) da planilha via vba, para que o complemento do Excel não precise de uma planilha pronta, ja formatada e salva.

    2 – A planilha funciona muito bem, mas … para uma quantidade maior de XML´s (testei com 74 e trava pouco e com 2500 trava muito) a planilha trava, o procesamento fica alto, acredito que resolveria com isso :

    ‘———————————-‘
    Application.ScreenUpdating = false
    Application.DisplayAlerts = false
    ‘———————————-‘
    ‘ código
    ‘———————————-‘
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    ‘———————————-‘

    … mas eu simplesmente coloquei isso em todos os lugares possiveis do código da planilha e ele não funciona. Se alguem encontrar um lugar pra colocar o “Application.ScreenUpdating” no código, eu acredito que o problema de travamento para.

    No mais, estamos a disposição.

    Att,

    Anderson Dorneles

    Resposta
    • OTAVIO F FEDRIZZE

      Funcionou Perfeitamente

      Muito Obrigado.

      Parabens pelo atualizacao e tambem para quem criou inicialmente

      Resposta
    • Paulo Cesar

      Baixei mas deu erro 91 ” A variavel do objeto ou a variavel do blovo “with” não foi definida.

      Resposta
      • Jose Inacio Filho

        Se for importar arquivos XML versão “4.00” usa este código que comente a parte que não precisa ver a versão já que será todas com versão do XML “4.00”

        ‘Versão da NFE
        ‘ For i = 0 To xmlDoc.SelectSingleNode(“/nfeProc/NFe/infNFe”).Attributes.Length – 1
        ‘ If LCase(xmlDoc.SelectSingleNode(“/nfeProc/NFe/infNFe”).Attributes(i).nodeName) = “versao” Then
        ‘ strVersao = xmlDoc.SelectSingleNode(“/nfeProc/NFe/infNFe”).Attributes(i).NodeValue

        ‘ Exit For
        ‘ End If
        ‘ Next

        ‘Data de emissão
        ‘ Select Case strVersao
        ‘ Case “4.00”

        ‘Deixe somente esta linha abaixo
        strDEmi = VBA.Formate(VBA.Left(xmlNode.SelectNodes(“dhEmi”)(0).Text, 10), “dd/mm/yyyy”)

        ‘ Case “3.10”
        ‘ strDEmi = VBA.Format(VBA.Left(xmlNode.SelectNodes(“dhEmi”)(0).Text, 10), “dd/mm/yyyy”)
        ‘ Case Else
        ‘ strDEmi = VBA.Right(xmlNode.SelectNodes(“dEmi”)(0).Text, 2) & “/” & _
        ‘ VBA.Mid(xmlNode.SelectNodes(“dEmi”)(0).Text, 6, 2) & “/” & _
        ‘ VBA.Left(xmlNode.SelectNodes(“dEmi”)(0).Text, 4)
        ‘ End Select

        Resposta
        • Anônimo

          Se for importar arquivos XML versão “4.00” usa este código que comente a parte que não precisa ver a versão já que será todas com versão do XML “4.00” . E caso não seja todos xml 4.00? Obrigado!

          Resposta
  • Mike Bermel

    Bom dia.

    Estou tentando adicionar a informação de ICMS ST e alíquota do ICMS ST, porém sem sucesso.

    Por acaso alguém tem essa planilha com esses dados?

    Resposta
  • Henrique Macedo

    Bom dia,

    Não sou da área entendo bem pouco de VBA mas preciso muito de uma planilha destas só que para XML de NFse, nota de serviços eletrônica, se alguém puder me ajudar.

    Um abraço

    Resposta
    • Mike Bermel

      Boa noite Henrique. O XML da NFse é bem direfente, nesse caso é mais fácil recriar a planilha.

      Resposta
  • GABRIELA GOIS OLIVEIRA

    Henrique estamos juntos! rs Não sou da área, trabalho com a parte fiscal e a planilha seria excelente para otimizar o processo de correlação de itens, mas ao importar está erro de compilação e não consegui resolver lendo os comentários anteriores…

    Resposta
  • Rafael Guerra

    É possível adicionar um espaço para a razão social da transportadora?

    Resposta
  • Anônimo

    a minha na captura esta dando erro 91 de novo alguem sabe por que?

    Resposta
  • Guilherme

    Boa tarde!

    Eu tenho uma planilha parecida, porém tenho um problema, ela duplica os XMLs, o que posso fazer para não duplicar os XMLs?

    Obrigado,

    Resposta
  • joao paulo

    Olá… Baixei a planilha e dá um ERRO 91

    Resposta
  • Adenilson Cabral de Moura

    Boa tarde Fábio;

    e possível puxar a parte da observação do XML com essa planilha?

    eu uso essa sua planilha está de parabéns nota 1000.

    se puxasse a parte da observação da nota seria muito bom mesmo.

    Resposta
  • Anônimo

    Boa Noite, em alguns arquivos XMLs contém caracteres com acentuação.

    Quando isso ocorre, a função LOAD não carrega.

    Alguém poderia me ajudar ?

    Resposta
  • Paulo Cesar

    Olá Fabio! Ao tentar realizar a importação o VBA deu o seguinte erro “O tipo definido pelo usuário não foi definido ” e o VBA marca a sub rotina Sub LerXml(ByVal strFolderPath As String).
    Sabe o que pode ser?
    Eu coloquei os arquivos xml em uma pasta e executei a captura e deu esse errom

    Resposta
  • Wiliam

    Estou com o erro de compilação: O tipo definido pelo usuário não foi definido.
    alguém pode me ajudar?
    w.alves@primax.com.br

    Resposta
  • Anônimo

    Prezad@s,

    Acho que é possivel fazer essa automação usando o Power Query.

    Resposta
  • Laura

    Pessoal, alguem sabe como acrescentar informações do xml na planilha ? Precisava acrescentar a fatura com vencimento das duplicatas

    Resposta
    • JOSEPH SILVA FERNANDES

      Boa tarde amigo, posso tentar te ajudar! Eu tenho essa tabela do Fabio mas toda modificado por mim e com coisa que removi e acrescentei.

      Meu email: joseph.automatus@gmail.com

      Resposta
      • EMANUEL O PANTOJA

        bom dia, Joseph

        tenho interesso na sua planilha atualizada, desde já agradeço

        Resposta
        • Joseph Fernandes

          Me manda um email que te dou o link dela por lá!

          Resposta
  • Neilton D Santos

    Boa tarde! gostaria de incluir na planilha as informacoes dos dados adicionais,”

    ICMS ISENTO CONFORME ARTIGO 459 ANEXO IX DO RICMS/02, NOTA DE RETORNO REFERENTE AO ROMANEIO 1347 PLACA OLQ-5923″ pode me ajudar a atualizar a planilha? Grato

    Resposta
  • ROBSON TENEDIN CASTILHOS

    Ola,
    Fabio, preciso acrescentar a informação de data de vencimento, consegue me ajudar a por essa informação ?

    Resposta
  • Gilson de Carvalho

    Segue a solução para erros com a versão 6.0 (MSXML2.DOMDocument60):
    A variável do objeto ou a variável do bloco ‘With’ não foi definida.
    (“Object variable or With block variable not set”)

    Dim xmlDoc As MSXML2.DOMDocument60
    Dim xmlNode As MSXML2.IXMLDOMNode

    Set xmlDoc = New MSXML2.DOMDocument60

    ‘Adicione o código abaixo:
    xmlDoc.SetProperty “SelectionNamespaces”, “xmlns:nfe=’http://www.portalfiscal.inf.br/nfe'”

    ‘Colocar o prefixo “nfe:” em todos os nós do caminho (SelectNodes / SelectSingleNode)
    Set xmlNode = xmlDoc.SelectSingleNode(“nfe:nfeProc/nfe:NFe/nfe:infNFe/nfe:ide/nfe:nNF”)

    Debug.Print “Número da NF: ” & xmlNode.Text

    Resposta
  • Anônimo

    Olá excelente dia, não consigo usar a aplicação, por favor poderiam me ajudar, segue o erro abaixo.

    Erro de copilação

    Resposta
  • Anônimo

    Muito boa, já utilizava a versão anterior, essa só está aparecendo um erro em tempo de compilação, “O tipo definido pelo usuário não foi definido”. Dim xmlDoc As DOMDocument (Sub LerXml(ByVal strFolderPath As String))

    Resposta
  • Anônimo

    Idem :

    ‘Versão da NFE
    For i = 0 To xmlDoc.SelectSingleNode(“/nfeProc/NFe/infNFe”).Attributes.Length – 1
    If LCase(xmlDoc.SelectSingleNode(“/nfeProc/NFe/infNFe”).Attributes(i).nodeName) = “versao” Then
    strVersao = xmlDoc.SelectSingleNode(“/nfeProc/NFe/infNFe”).Attributes(i).NodeValue
    Exit For
    End If
    Next

    Apresentou o erro:
    Erro em tempo de execução ’91’:
    A variável do objeto ou a variável do bloco ‘With’ não foi definida.

    Resposta

Deixe uma resposta