XML NFE - NOTAS ENTRADA
AMIGOS, ESTOU DESENVOLVENDO UMA FUNCAO PARA IMPORTAR XML PARA MEU SISTEMA
SO NAO ESTOU CONSEGUINDO CAPTURAR DUAS INFORMACOES:
1) A CHAVE DA NFE ( ID DA CHAVE)
2) NAO SEI COMO CRIAR O (FOR EACH) DOS PRODUTOS CONTIDOS NO XML, OU SEJA LER AS INFORMACOES DE CADA UM
SE PUDEREM ME AJUDAR AGRADECO
SO NAO ESTOU CONSEGUINDO CAPTURAR DUAS INFORMACOES:
1) A CHAVE DA NFE ( ID DA CHAVE)
2) NAO SEI COMO CRIAR O (FOR EACH) DOS PRODUTOS CONTIDOS NO XML, OU SEJA LER AS INFORMACOES DE CADA UM
SE PUDEREM ME AJUDAR AGRADECO
Amigão bom dia ! por que estas a gritar conosco ?
nos precisamos saber porque nao esta conseguindo e o que ja tens pronto, para entao podermos te ajudar melhor !
Abraços
nos precisamos saber porque nao esta conseguindo e o que ja tens pronto, para entao podermos te ajudar melhor !
Abraços
Private m_objDOMNFe As DOMDocument
Dim objNFeRoot As IXMLDOMElement
Dim objNFe2 As IXMLDOMElement
Set m_objDOMNFe = New DOMDocument
m_objDOMNFe.resolveExternals = True
m_objDOMNFe.validateOnParse = True
[ô]carrega o XML no documento DOM
m_objDOMNFe.async = False
Call m_objDOMNFe.Load(NOME_DO_XML)
[ô]verifica se a carga do XML foi feita com sucesso
If m_objDOMNFe.parseError.reason <> [Ô][Ô] Then
MsgBox m_objDOMNFe.parseError.reason
Exit Sub
End If
Set objNFeRoot = m_objDOMNFe.documentElement
If objNFeRoot.childNodes.length = 1 Then
MsgBox [Ô]Arquivo: [Ô] & NOME_DO_XML& [Ô] Sem Protocolo![Ô], vbCritical, [Ô]Atenção![Ô]
GoTo Finaliza
Else
If objNFeRoot.childNodes.Item(1).nodeName = [Ô]protNFe[Ô] Then
ElseIf objNFeRoot.childNodes.Item(1).nodeName = [Ô]retCancNFe[Ô] Then
MsgBox [Ô]Arquivo: [Ô] & pNomeArquivo & [Ô] de Cancelamento![Ô], vbCritical, [Ô]Atenção![Ô]
GoTo Finaliza
Else
MsgBox objNFeRoot.childNodes.Item(1).nodeName
End If
End If
NOME_DO_XML = caminho do seu xml
E por ai vai...
Dim objNFeRoot As IXMLDOMElement
Dim objNFe2 As IXMLDOMElement
Set m_objDOMNFe = New DOMDocument
m_objDOMNFe.resolveExternals = True
m_objDOMNFe.validateOnParse = True
[ô]carrega o XML no documento DOM
m_objDOMNFe.async = False
Call m_objDOMNFe.Load(NOME_DO_XML)
[ô]verifica se a carga do XML foi feita com sucesso
If m_objDOMNFe.parseError.reason <> [Ô][Ô] Then
MsgBox m_objDOMNFe.parseError.reason
Exit Sub
End If
Set objNFeRoot = m_objDOMNFe.documentElement
If objNFeRoot.childNodes.length = 1 Then
MsgBox [Ô]Arquivo: [Ô] & NOME_DO_XML& [Ô] Sem Protocolo![Ô], vbCritical, [Ô]Atenção![Ô]
GoTo Finaliza
Else
If objNFeRoot.childNodes.Item(1).nodeName = [Ô]protNFe[Ô] Then
ElseIf objNFeRoot.childNodes.Item(1).nodeName = [Ô]retCancNFe[Ô] Then
MsgBox [Ô]Arquivo: [Ô] & pNomeArquivo & [Ô] de Cancelamento![Ô], vbCritical, [Ô]Atenção![Ô]
GoTo Finaliza
Else
MsgBox objNFeRoot.childNodes.Item(1).nodeName
End If
End If
NOME_DO_XML = caminho do seu xml
E por ai vai...
Vê se te ajuda, este é um exemplo que utilizei para carregar o idioma de um formulário através de um ficheiro xml...
Num modulo:
Dim File As Integer: File = FreeFile
Dim content As String
Open App.Path & [Ô]OTeuFicheiro.XML[Ô] For Input As #File
content = input(LOF(File), #File)
Dim xml As MSXML2.DOMDocument: Set xml = New MSXML2.DOMDocument
If xml.loadXML(content) Then
Dim Sobre_nodeList As IXMLDOMNode: Set Sobre_nodeList = xml.selectSingleNode([Ô]/Linguas/Form_Sobre[Ô])
Module_Lingua.Sobre_Label_Ok = Sobre_nodeList.selectSingleNode([Ô]Label_Ok[Ô]).Text
Module_Lingua.Sobre_Label_Versao = Sobre_nodeList.selectSingleNode([Ô]Label_Versao[Ô]).Text
Module_Lingua.Sobre_Label_Desenvolvido = Sobre_nodeList.selectSingleNode([Ô]Label_Desenvolvido[Ô]).Text
Module_Lingua.Sobre_Label_Contacto = Sobre_nodeList.selectSingleNode([Ô]Label_Contacto[Ô]).Text
Module_Lingua.Sobre_Label_Titulo = Sobre_nodeList.selectSingleNode([Ô]Label_Titulo[Ô]).Text
Module_Lingua.Sobre_Botao_Fechar = Sobre_nodeList.selectSingleNode([Ô]Botao_Fechar[Ô]).Text
Label_Ok.Caption = Module_Lingua.Sobre_Label_Ok
Label_Titulo.Caption = Module_Lingua.Sobre_Label_Titulo
Botao_Fechar.ToolTipText = Module_Lingua.Sobre_Botao_Fechar
End If
Num modulo:
Global Sobre_Label_Titulo As String
Global Sobre_Botao_Fechar As String
Global Sobre_Label_Ok As String
Global Sobre_Label_Versao As String
Global Sobre_Label_Desenvolvido As String
Global Sobre_Label_Contacto As String
otimas dicas, agora so preciso saber como capturas os campos DET dos produtos
tentei usar assim:
If objNFeRoot.childNodes.Item(1).nodeName = [Ô]det[Ô] Then
MsgBox objNFeRoot.childNodes.Item(1).text
End If
mas nao deu certo
como que eu faço para saber qtos produtos tem no xml e ler os campos descriçao, quantidade e valor?
tentei usar assim:
If objNFeRoot.childNodes.Item(1).nodeName = [Ô]det[Ô] Then
MsgBox objNFeRoot.childNodes.Item(1).text
End If
mas nao deu certo
como que eu faço para saber qtos produtos tem no xml e ler os campos descriçao, quantidade e valor?
HELP MEEEEEEEE
Tópico encerrado , respostas não são mais permitidas