IMPORTAR PRODUTOS DA NFE

 Tópico anterior Próximo tópico Novo tópico

IMPORTAR PRODUTOS DA NFE

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#468677 - 01/11/2016 17:21:37

RICOCARDOZO
PONTA GROSSA
Cadast. em:Março/2004


Olá estou tentando fazer uma rotina para importar produtos de uma nfe para uma grade.
Gostaria de uma ajuda para fazer um loop na parte dos produtos quando existem mais de um item.

Public Sub carregaprodutos()
Dim xmlDoc As New MSXML2.DOMDocument30
Dim listaNodeItens As IXMLDOMNodeList
Dim nodeXML As IXMLDOMElement
    Grade.Clear
    xmlDoc.async = False
    xmlDoc.Load App.Path & "\Dados\nfe.xml"
    
    Set nodeXML = xmlDoc.selectSingleNode("//prod")
    Grade.TextMatrix(1, 2) = nodeXML.selectSingleNode("//xProd").Text
    Grade.TextMatrix(2, 2) = nodeXML.selectSingleNode("//xProd").Text
End Sub




#468712 - 03/11/2016 14:52:42

RICOCARDOZO
PONTA GROSSA
Cadast. em:Março/2004


Olá consegui resolver ,não sei se é a forma mais correta , mais já esta funcionando.

    Select Case node.nodeName
    Case "qCom"
    Grade.TextMatrix(linha, 1) = node.nodeTypedValue
    
    Case "xProd"
    Grade.TextMatrix(linha, 2) = node.nodeTypedValue
    
    Case "vUnCom"
    Grade.TextMatrix(linha, 3) = node.nodeTypedValue
    linha = linha + 1
    End Select


Agora gostaria de uma ajudinha ;
dentro da pasta \dados\ tem vários xml
nfe1
nfe2
nfe3

como faço para abrir as tres , tipo abre a nfe1 importa fecha , passa pra proxima nfe2 importa fecha e passa para a nfe3.




#468714 - 03/11/2016 16:02:25

SINCLAIR
CRICIUMA
Cadast. em:Janeiro/2001


Colega RICOCARDOZO,

Para localizar os arquivos XML dentro de pastas, utilize o FileSystemObjets.

Tudo de bom.


Euzébio Cruz
Criciúma - SC


#468717 - 03/11/2016 16:50:28

RICOCARDOZO
PONTA GROSSA
Cadast. em:Março/2004


Até já sei como fazer mas queria implementar nesta rotina acima e não estou conseguindo.

Dim arq As String
'arq = Dir(App.Path & "\Dados\*.xml")
'Do While arq <> ""
'arq = Dir()
'Loop



#468719 - 03/11/2016 17:21:04

NILSONTRES
SAO PAULO
Cadast. em:Março/2012


Aprenda a desserializar xml nesse exemplo do KERPLUNK, caso contrario vc vai pirar com esses nod's.
youtube




#468720 - 03/11/2016 17:31:19

JOHNSTEVE
COSMOPOLIS-SP
Cadast. em:Janeiro/2016


Citação:
:
Aprenda a desserializar xml nesse exemplo do KERPLUNK, caso contrario vc vai pirar com esses nod's.
youtube


RICOCARDOZO, faça oq o amigo Nilson falou  Desserializar XML. do video do KERPLUNK

cara vc nao vai se arrepender. é top show de bola. eu nao tive mais dor de cabeça depois q aprendi. com a ajuda do amigo Nilson e Kerplunk.
pega o video leia estude. é facil facil.  :)





Resposta escolhida #468727 - 04/11/2016 08:22:52

DIEGODOM
CATOLE DO ROCHA
Cadast. em:Maio/2015


Bom dia ,
utilizo este código nos meus projetos

Sub ImportarProdutos()
    Dim cprod As String, nitem As String, vuncom As String, qcom As String, xprod As String, vprod As String
    Dim Caminho As String
    Dim XMLdoc As Object
    Dim I As Integer
    Set XMLdoc = CreateObject("Microsoft.XMLDOM")
    XMLdoc.async = False
    Caminho = "c:\temp\teste.xml"
    XMLdoc.Load (Caminho)

    qtdProd = XMLdoc.getElementsByTagName(sBn & "infNFe/det").Length 'Contando quantos itens tem o nó det (detalhes)
        
        For I = 0 To qtdProd - 1 'Varrendo todos os itens
            cprod = CStr(XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).SelectNodes("prod/cProd").Item(0).Text)
            nitem = CStr(XMLdoc.getElementsByTagName("nfeProc/NFe/infNFe/det").Item(I).Attributes(0).value)
            vuncom = Replace(XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).SelectNodes("prod/vUnCom").Item(0).Text, ".", ",")
            qcom = Replace(XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).SelectNodes("prod/qCom").Item(0).Text, ".", ",")
            xprod = CStr(XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).SelectNodes("prod/xProd").Item(0).Text)
            vprod = Replace(XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).SelectNodes("prod/vProd").Item(0).Text, ".", ",")
        Next I
    Set XMLdoc = Nothing

End Sub



#468730 - 04/11/2016 09:00:14

FUTURA
.
Cadast. em:Maio/2004


Diego, vc tem a parte dos impostos tbm ?



#468731 - 04/11/2016 09:34:42

DIEGODOM
CATOLE DO ROCHA
Cadast. em:Maio/2015


ola Edson, sim


        If XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).SelectNodes("imposto/IPI").Length > 0 Then
            If XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).SelectNodes("imposto/IPI/IPITrib").Length > 0 Then
                 vipi = Replace(XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).SelectNodes("imposto/IPI/IPITrib").Item(0).getElementsByTagName("vIPI").Item(0).Text, ".", ",")
            End If
        End If
        
        If XMLdoc.SelectNodes("nfeProc/NFe /infNFe/det").Item(I).getElementsByTagName("vICMSST").Length > 0 Then
            vicmsst = Replace(XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).getElementsByTagName("vICMSST").Item(0).Text, ".", ",")
        End If

        If XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).getElementsByTagName("vFrete").Length > 0 Then
            vfrete = Replace(XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).getElementsByTagName("vFrete").Item(0).Text, ".", ",")
        End If
        
        If XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).getElementsByTagName("vICMSDeson").Length > 0 Then
                vicmsdeson = Replace(XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).getElementsByTagName("vICMSDeson").Item(0).Text, ".", ",")
        End If
      
        If XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).ChildNodes(1).ChildNodes(0).ChildNodes(0).SelectNodes("pICMS").Length > 0 Then
            picms = Replace(XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).ChildNodes(1).ChildNodes(0).ChildNodes(0).SelectNodes("pICMS").Item(0).Text, ".", ",") / 100
        End If
        
        If XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).ChildNodes(1).ChildNodes(0).ChildNodes(0).SelectNodes("vBC").Length > 0 Then
            vbc = Replace(XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).ChildNodes(1).ChildNodes(0).ChildNodes(0).SelectNodes("vBC").Item(0).Text, ".", ",")
        End If
        
        If XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).ChildNodes(1).ChildNodes(0).ChildNodes(0).SelectNodes("vICMS").Length > 0 Then
            vicms = Replace(XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).ChildNodes(1).ChildNodes(0).ChildNodes(0).SelectNodes("vICMS").Item(0).Text, ".", ",")
        End If
        
        If XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).SelectNodes("prod/vOutro").Length > 0 Then
            voutro = Replace(XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).SelectNodes("prod/vOutro").Item(0).Text, ".", ",")
        End If
        
        If XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).SelectNodes("prod/vDesc").Length > 0 Then
            vdesc = Replace(XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).SelectNodes("prod/vDesc").Item(0).Text, ".", ",")
        End If
        
        If XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).SelectNodes("prod/vSeg").Length > 0 Then
            vseg = Replace(XMLdoc.SelectNodes("nfeProc/NFe/infNFe/det").Item(I).SelectNodes("prod/vSeg").Item(0).Text, ".", ",")
        End If



#468732 - 04/11/2016 10:21:24

FUTURA
.
Cadast. em:Maio/2004


Diego, te passei um mensagem interna..



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por RICOCARDOZO em 22/11/2016 12:11:35