[resolvido] importar txt com delimitadores

Moderador: Avelino Sampaio

percoski
Mensagens: 29
Registrado em: 29 Jul 2015, 19:26

[resolvido] importar txt com delimitadores

Mensagempor percoski » 05 Jul 2018, 20:47

Boa tarde, esto precisando importa um arquivo .txt.
Até consegui algo mas não sei como delimitar a importação para extrair os dados que preciso.
Segue exemplo do arquivo

{"USUARIO":"2","CLIENTE":"4","DATA":"2018-07-04","PAGAMENTO":"1","OBSERVACAO":"''","VALOR_DESCONTO":5,"TOTAL_PEDIDO":45,"ITENS":[{"ID_PEDIDO":"1530730237041-BySbv5qG7","PRODUTO":"3","QUANTIDADE":2,"VALOR_UNITARIO":"7","VALOR_DESCONTO":0,"VALOR_TOTAL":"7"},{"ID_PEDIDO":"1530730237041-BySbv5qG7","PRODUTO":"1073","QUANTIDADE":3,"VALOR_UNITARIO":"12","VALOR_DESCONTO":0,"VALOR_TOTAL":"12"}]}

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


percoski
Mensagens: 29
Registrado em: 29 Jul 2015, 19:26

Re: importar txt com delimitadores

Mensagempor percoski » 06 Jul 2018, 01:09

senhores cheguei aki

Código: Selecionar todos

Dim Arquivo As Integer
    Dim CaminhoArquivo As String
    Dim TextoArquivo As String
    Dim TextoProximaLinha As String
    Dim ContadorLinha As Long
    Dim str As String
    Dim arrver
 
   
    Arquivo = FreeFile
   
 
   
    Open Application.CurrentProject.Path & "\Monitor\pedido\1530715142649-SkkGhUcG7.json" For Input As Arquivo
    ContadorLinha = 1
   
    Do While Not EOF(Arquivo)
        Line Input #Arquivo, TextoProximaLinha
        TextoProximaLinha = TextoProximaLinha & vbCrLf
        TextoArquivo = TextoArquivo & TextoProximaLinha
    Loop
     arrver = Split(TextoArquivo, ",")
   
    MsgBox arrver(0)
    MsgBox arrver(1)
    MsgBox arrver(2)
    MsgBox arrver(3)
    MsgBox arrver(4)
    MsgBox arrver(5)
    MsgBox arrver(6)
    MsgBox arrver(7)
    MsgBox arrver(8)
    MsgBox arrver(9)
 
   
    Close Arquivo

consegui extrair por elemento mas agora tenho alguma dúvidas, qdo chego em "itens:" não sei qtos elementos vou ter pois podem ter vários itens e tenho q fazer um laço, pelo menos eu acho para percorrer tudo isso.
se puderem me ajudar agradeço

Avatar do usuário
Avelino Sampaio
Mensagens: 1870
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: importar txt com delimitadores

Mensagempor Avelino Sampaio » 07 Jul 2018, 07:18

percoski,

o que percebi é que os itens estão limitados pelos Colchetes [ ] e que cada item está limitado pelas Chaves { } . Tente algo assim:

Código:
...
itens = Split(tx, "[")
item = Split(itens(1), "{")

For j = 1 To UBound(item)
k = Split(item(j), ",")
Debug.Print k(0)
Debug.Print k(1)
Debug.Print k(2)
Debug.Print k(3)
Debug.Print k(4)
Next
...


Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

percoski
Mensagens: 29
Registrado em: 29 Jul 2015, 19:26

Re: importar txt com delimitadores

Mensagempor percoski » 07 Jul 2018, 23:45

Mestre como sempre sua dicas são perfeitas.
só mais uma dúvida, pendei que seria mais fácil. Eis o resultado:

Código:
"ID_PEDIDO":"1530730237041-BySbv5qG7"
"PRODUTO":"3"
"QUANTIDADE":2
"VALOR_UNITARIO":"7"
"VALOR_DESCONTO":0
"VALOR_TOTAL":"7"}
"ID_PEDIDO":"1530730237041-BySbv5qG7"
"PRODUTO":"1073"
"QUANTIDADE":3
"VALOR_UNITARIO":"12"
"VALOR_DESCONTO":0
"VALOR_TOTAL":"12"}]}


No caso preciso utilizar somente os valores que estão depois do : e entre " ".
Por exemplo 'PRODUTO' ===> identifica o campo. "3"===> esse sim o valor que vou ter que utilizar.
Se não form abusar teria alguma sugestão

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


Avatar do usuário
Avelino Sampaio
Mensagens: 1870
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: importar txt com delimitadores

Mensagempor Avelino Sampaio » 08 Jul 2018, 09:23

percoski

mais um split()

Código:
...
For j = 1 To UBound(item)
k = Split(item(j), ",")
i = Split(k(0), ":"): Debug.Print i(1)
i = Split(k(1), ":"): Debug.Print i(1)
i = Split(k(2), ":"): Debug.Print i(1)
i = Split(k(3), ":"): Debug.Print i(1)
Next
...


Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

percoski
Mensagens: 29
Registrado em: 29 Jul 2015, 19:26

Re: importar txt com delimitadores

Mensagempor percoski » 12 Jul 2018, 20:55

Opa, muito trabalho mas tudo ok funcionou

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.



Voltar para “Módulos VBA”

Quem está online

Usuários neste fórum: Nenhum usuário registrado e 1 visitante