Notifications
Clear all

Buscar no XML um dado contido na planilha

11 Posts
3 Usuários
0 Reactions
1,838 Visualizações
(@jnexcel)
Posts: 298
Reputable Member
Topic starter
 

por favor, alguém conhece alguma forma de validar dados antes de importar as informações para o excel?

am anexo, segue a minha planilha com todos os detalhes.

eu gostaria de validar uma informação antes que os dados fossem importados para o Excel.

Agradeço pela colaboração.

 
Postado : 02/05/2018 8:16 am
(@klarc28)
Posts: 971
Prominent Member
 

Se eu fosse criar um tópico sobre isso, teria o seguinte título:

Buscar no XML um dado contido na planilha

 
Postado : 02/05/2018 9:02 am
(@jnexcel)
Posts: 298
Reputable Member
Topic starter
 

Caso alguém tenha conhecimento de como fazer isso porém queira cobrar pelo serviço, por favor, me informe o valor (peço isso, pois preciso usar essa planilha mas sem essa regra de validação eu não posso) agradeço pela atenção de todos.

 
Postado : 02/05/2018 11:10 am
(@jnexcel)
Posts: 298
Reputable Member
Topic starter
 

Prezados, consegui encontrar na internet um código, porém eu não estou conseguindo executar :(

será que alguém com mais experiência poderia me ajudar por favor?

o código não valida ele está ai, porém não está validando a informação que era para validar.

PRIMEIRA TENTATIVA

'Valida se o Cnpj existe na planilha
        Dim cnpjValido As Boolean
        cnpjValido = validaxml(strCNPJEmi)
        If cnpjValido Then


Public Function validaxml(ByVal cnpj As String) As Boolean
     
    For Each c In ThisWorkbook.Sheets("LISTA DE CNPJ PERMITIDO").Range("A2")
        If cnpj = c.Value Then
            validaxml = True
        End If
    Next
 
    validaxml = False
 
End Function
SEGUNDA TENTATIVA

'Valida se o Cnpj existe na planilha
        Dim cnpjValido As Boolean
        cnpjValido = validaxml(strCNPJEmi)
        If Not cnpjValido Then
            Next
        End If

Public Function validaxml(ByVal cnpj As String) As Boolean
     
    For Each c In ThisWorkbook.Sheets("LISTA DE CNPJ PERMITIDO").Range("A2")
        If cnpj = c.Value Then
            validaxml = True
        End If
    Next
 
    validaxml = False
 
End Function

agradeço pela atenção de todos que possam ajudar

 
Postado : 08/05/2018 11:24 am
(@jnexcel)
Posts: 298
Reputable Member
Topic starter
 

prezados, bom dia !

será que alguém mais capacitado porém me ajudar com esses códigos??

agradeço pela atenção.

 
Postado : 17/05/2018 8:16 am
(@klarc28)
Posts: 971
Prominent Member
 

O laço For Each só faz sentido se for percorrer mais de uma célula:

Public Function validaxml(ByVal cnpj As String) As Boolean
      validaxml = False
'For Each c significa Para cada célula
'In ThisWorkbook.Sheets("LISTA DE CNPJ PERMITIDO").Range("A2:A20") significa no intervalo A2:A20
    For Each c In ThisWorkbook.Sheets("LISTA DE CNPJ PERMITIDO").Range("A2:A20")
      'Se o cnpj for igual ao valor da célula
  If cnpj = c.Value Then
            validaxml = True
        End If
    Next

   

End Function
 
Postado : 17/05/2018 8:21 am
(@jnexcel)
Posts: 298
Reputable Member
Topic starter
 

Eu alterei como você indicou, mas ainda não roda :cry: :cry: :cry:

em anexo, seguem os arquivos.

Por favor, se for possível poderia me informar onde eu estou errando?

o excel nã está validando o campo cnpj dest

 
Postado : 17/05/2018 9:58 am
(@rafaelp)
Posts: 89
Trusted Member
 

Boa tarde.

Não sei se entendi bem mas acredito que seria mais ou menos isso?

UltLinha = Sheets("LISTA DE CNPJ PERMITIDO").Cells(Rows.Count, "A").End(xlUp).Row

For a = 2 To UltLinha

     if stringDoCNPJ = sheets("LISTA DE CNPJ PERMITIDO").cells(a, "A")

          (ROTINA PARA IMPORTAR)
          Exit Sub

     end if

next

        MsgBox ("CNPJ não encontrado na lista!"), vbOKOnly, "Não Importado"
        Exit Sub

 
Postado : 17/05/2018 10:26 am
(@klarc28)
Posts: 971
Prominent Member
 

É necessário que uma Sub chame a Function.

A Sub é que deve ser executada. A Function apenas é chamada.

Só estou tentando explicar a parte em que percorre as células em busca de um cnpj.

Como pode ver na imagem, essa parte do código funciona.

Public Function validacpf(ByVal cnpj As String, byval intervalo as string) As Boolean
      validacpf = False
'For Each c significa Para cada célula
'In ThisWorkbook.Sheets("LISTA DE CNPJ PERMITIDO").Range("A2:A20") significa no intervalo A2:A20
    For Each c In ThisWorkbook.Sheets("LISTA DE CNPJ PERMITIDO").Range(intervalo)
      'Se o cnpj for igual ao valor da célula
  If cnpj = c.Value Then
            validacpf = True
Exit Function
        End If
    Next

   

End Function


Sub teste()
dim UltLinha as long
UltLinha = Sheets("LISTA DE CNPJ PERMITIDO").Cells(Rows.Count, "A").End(xlUp).Row
If validacpf("123", "A2:A" & UltLinha) Then

MsgBox "Encontrei o cnpj"

End If
End Sub
 
Postado : 17/05/2018 10:27 am
(@jnexcel)
Posts: 298
Reputable Member
Topic starter
 

entendi, mas então por qual motivo o meu código não está validando o campo ??

se eu excluir a function e clicar no botão importar ( botão contido na planilha LER XML , o excel vai importar os dados.

se eu deixar a function o excel não importa os dados mesmo o CNPJ estando na planilha LISTA DE CNPJ

ou seja, minha function está com problemas ERA PARA VALIDAR É SE ACHAR O CNPJ importa, mas nem que o CNPJ esteja na planilha ele não importa.

 
Postado : 17/05/2018 12:07 pm
(@klarc28)
Posts: 971
Prominent Member
 

Em relação à importação, eu não sei.
Se quiser percorrer vários cpf 's é assim:

Public Function validacpf(ByVal cnpj As String, byval intervalo as string) As Boolean
      validacpf = False
'For Each c significa Para cada célula
'In ThisWorkbook.Sheets("LISTA DE CNPJ PERMITIDO").Range("A2:A20") significa no intervalo A2:A20
    For Each c In ThisWorkbook.Sheets("LISTA DE CNPJ PERMITIDO").Range(intervalo)
      'Se o cnpj for igual ao valor da célula
  If cnpj = c.Value Then
            validacpf = True
Exit Function
        End If
    Next

   

End Function


Sub teste()
dim UltLinha as long
dim i as long

UltLinha = Sheets("LISTA DE CNPJ PERMITIDO").Cells(Rows.Count, "A").End(xlUp).Row

for  i = 2 to UltLinha
If validacpf(Sheets("LISTA DE CNPJ PERMITIDO").range("A" & i).value, "A2:A" & UltLinha) Then

call 'nome do procedimento para importar

End If
next i
End Sub
 
Postado : 17/05/2018 12:29 pm