MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    [Resolvido]Ler ficheiro .json pelo VBA

    avatar
    RicMelo
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 14
    Registrado : 20/03/2018

    [Resolvido]Ler ficheiro .json pelo VBA Empty [Resolvido]Ler ficheiro .json pelo VBA

    Mensagem  RicMelo 16/4/2018, 12:22

    Boas
    Estou procurando por um codigo para ler um ficheiro .json (info.json) mas o que encontro ou é para excell ou para ficheiro .json numa pagina web.

    Meu ficheiro info.json contem:

    {"personal": {"path": "C:\\Users\\MeuNome\\MinhaPasta", "host": 00000000000, "is_team": false, "subscription_type": "Pro"}}


    O que pretendo é uma funcao que faça:


    1- Verifique em que pasta se encontra o ficheiro info.json e utilisa esse caminho para a funçao

    %APPDATA%\MinhaPasta\

    %LOCALAPPDATA%\MinhaPasta\


    2- Vai buscar a informaçao pretendida no ficheiro info.json

    Neste caso pretendo carregar a informaçao "path"
    o que me dara o resultado de - "C:\\Users\\MeuNome\\MinhaPasta"
    sendo que a informaçao pretendida sera - "C:\Users\MeuNome\MinhaPasta"

    Website onde encontrei alguma informaçao e codigos mas que nao consigo aplicar para meu uso:
    stackoverflow.com/questions/48808123/object-required-error-with-json-to-vba-converting-process
    [Não são permitidos links externos] - Copiar e colar no browser

    Desde já agradeço ao forum
    Cumprimentos
    Pedro Melo
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    [Resolvido]Ler ficheiro .json pelo VBA Empty Re: [Resolvido]Ler ficheiro .json pelo VBA

    Mensagem  FabioPaes 16/4/2018, 15:38

    Ta, mas qual a dificuldade ou erro encontrado amigo?

    Se o problema são as duas barras a mais, submeta a informação "path" a um Replace(path,"\\","\") que terá no padrão desejado!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    RicMelo
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 14
    Registrado : 20/03/2018

    [Resolvido]Ler ficheiro .json pelo VBA Empty Re: [Resolvido]Ler ficheiro .json pelo VBA

    Mensagem  RicMelo 16/4/2018, 15:43

    O problema é que nao sei como fazer para ler o ficheiro info.json e retirar a informaçao "path".

    Cumprimentos
    Pedro Melo
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    [Resolvido]Ler ficheiro .json pelo VBA Empty Re: [Resolvido]Ler ficheiro .json pelo VBA

    Mensagem  FabioPaes 16/4/2018, 15:48

    Posta aqui o Exemplo desse arquivo .json e o código encontrado para Excel!

    Pois os códigos para Excel, na grande maioria funcionam perfeitamente para Access, com pequenas modificações é claro!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    RicMelo
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 14
    Registrado : 20/03/2018

    [Resolvido]Ler ficheiro .json pelo VBA Empty Re: [Resolvido]Ler ficheiro .json pelo VBA

    Mensagem  RicMelo 16/4/2018, 16:09

    Junto envio o ficheiro Info.json
    para o codigo pode ver o codigo no seguinte link:
    stackoverflow.com/questions/48808123/object-required-error-with-json-to-vba-converting-process
    [Não são permitidos links externos]  -  Copiar e colar no browser

    github.com/VBA-tools/VBA-JSON
    [Não são permitidos links externos]  -  Copiar e colar no browser

    Cumprimentos
    Pedro Melo
    Anexos
    [Resolvido]Ler ficheiro .json pelo VBA AttachmentFicheiro.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1 Kb) Baixado 53 vez(es)
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    [Resolvido]Ler ficheiro .json pelo VBA Empty Re: [Resolvido]Ler ficheiro .json pelo VBA

    Mensagem  FabioPaes 16/4/2018, 18:59

    Dessa forma é possivel realizar a leitura do arquivo como TEXTO:


       Open CurrentProject.Path & "\Info.json" For Input As #1
          Line Input #1, strTexto
          Debug.Print strTexto
          MsgBox strTexto
       Close #1



    Coloque o comando a cima no Clique do Botão, e coloque o arquivo info.json na mesma pasta do Aplicativo.
    Vc receberá o conteúdo da Linha1 do arquivo de Texto na totalidade.


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    RicMelo
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 14
    Registrado : 20/03/2018

    [Resolvido]Ler ficheiro .json pelo VBA Empty Re: [Resolvido]Ler ficheiro .json pelo VBA

    Mensagem  RicMelo 16/4/2018, 19:23

    Muito obrigado pela ajuda!
    Já é um grande avanço!
    converti sua formula para uma funçao:

    Public Function LerJson()
      Open CurrentProject.Path & "\Info.json" For Input As #1
         Line Input #1, strTexto
         Debug.Print strTexto
         LerJson strTexto
      Close #1
    End Function

    Ao colocar ?LerJson para verificar o resultado ele me apresenta correctamente a informaçao do Info.json:

    {"personal": {"path": "C:\\Users\\MeuNome\\MinhaPasta", "host": 00000000000, "is_team": false, "subscription_type": "Pro"}}

    mas tambem apresenta um erro:

    Run-time error '55':
    File already open


    Resolvi esse erro colocando:

    Public Function LerJson()
    On Error GoTo Erro
      Open CurrentProject.Path & "\Info.json" For Input As #1
         Line Input #1, strTexto
         Debug.Print strTexto
         LerJson strTexto
      Close #1
    Erro: Exit Function
    End Function

    2 Questões!

    1 - Essa maneira que usei para resolver o erro é a mais correcta?
    2 - Tem como obter somente "C:\\Users\\MeuNome\\MinhaPasta" como resultado?

    Cumprimentos
    Pedro Melo
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    [Resolvido]Ler ficheiro .json pelo VBA Empty Re: [Resolvido]Ler ficheiro .json pelo VBA

    Mensagem  FabioPaes 16/4/2018, 20:33

    Amigo, o problema ocorre pq vc chama a Função dentro da propria Função!

    Veja:
    Public Function LerJson()
      Open CurrentProject.Path & "\Info.json" For Input As #1
         Line Input #1, strTexto
         Debug.Print strTexto
         LerJson strTexto
      Close #1
    End Function




    Comente essa Linha!


    Essa forma que passei é um paliativo, pois eu nunca mexi com a interpretação desse tipo de arquivo! Certamente existe sim a forma correta de realizar a leitura dele, mas não consegui adaptar os exemplo, pois sempre apresenta um erro, que não tem nada a ver com o fato de ter sido criado para Excel. Falta algo que não sei o que é...


    Para Obter somente o Texto do Patch, pode utilizar junto, a função do Atheixeira separaEntreDuasStringsXML que resolverá seu problema!
    Veja a Função aqui: https://www.maximoaccess.com/t29286-importar-todas-as-nfe-nota-fiscal-eletronica-xml-de-uma-pasta-versao-xml-1-10-2-00-e-3-10


    Mude sua Função para:



    Public Function LerJson()

      Open CurrentProject.Path & "\Info.json" For Input As #1

         Line Input #1, strTexto

         'Ira pegar o Texto e separar o que tiver entre: (path": ") e (", "host)

         LerJson = Replace(separaEntreDuasStringsXML((strTexto), "path" & """: """, """, """ & "host"), "\\", "\")

      Close #1

    End Function



    Chame ela: 

    ex:

    MsgBox LerJson



    E terá o que precisa, mas lembre-se é de certa forma, uma gambiarra!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    RicMelo
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 14
    Registrado : 20/03/2018

    [Resolvido]Ler ficheiro .json pelo VBA Empty Re: [Resolvido]Ler ficheiro .json pelo VBA

    Mensagem  RicMelo 16/4/2018, 21:12

    Muito obrigado pela ajuda!
    Agora ficou a funcionar correctamente pois descobri a que se devia o erro 55.

    A formula estava a abrir o ficheiro 2 vezes dai o erro

    Public Function LerJson()
     Open CurrentProject.Path & "\Info.json" For Input As #1
        Line Input #1, strTexto
        Debug.Print strTexto --------Primeira Abertura
        LerJson strTexto ------------Segunda Abertura

     Close #1
    End Function


    Bastou remover a Linha Debug.Print strTexto :

    Public Function LerJson()
     Open CurrentProject.Path & "\Info.json" For Input As #1
        Line Input #1, strTexto
        LerJson = Replace(separaEntreDuasStringsXML((strTexto), "path" & """: """, """, """ & "host"), "\\", "\")
     Close #1
    End Function


    Sendo que modifiquei a formula para:

    Public Function LerJson(Ficheiro As Variant)
      Open Ficheiro For Input As #1
           Line Input #1, strTexto
           LerJson = Replace(separaEntreDuasStringsXML((strTexto), "path" & """: """, """, """ & "host"), "\\", "\")
      Close #1
    End Function


    Assim so preciso chamar a formula e indicar o caminho:

    call LerJson(Caminho do ficheiro)

    Quero dar um MUITO OBRIGADO ao FabioPaes pela ajuda que me deu!

    Cumprimentos
    Pedro Melo
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    [Resolvido]Ler ficheiro .json pelo VBA Empty Re: [Resolvido]Ler ficheiro .json pelo VBA

    Mensagem  FabioPaes 16/4/2018, 21:15

    Bacana amigo, é uma pena não acharmos a melhor solução! Mas fica um paliativo que dá certo!

    Até a próxima se Deus quiser!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    RicMelo
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 14
    Registrado : 20/03/2018

    [Resolvido]Ler ficheiro .json pelo VBA Empty Re: [Resolvido]Ler ficheiro .json pelo VBA

    Mensagem  RicMelo 16/4/2018, 21:16

    Já é um começo! E se olharmos bem já nao esta muito mal pois nao dá erro e faz o que se pretende!

    Mais uma vez MUITO OBRIGADO!

    Cumprimentos
    Pedro Melo
    avatar
    RicMelo
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 14
    Registrado : 20/03/2018

    [Resolvido]Ler ficheiro .json pelo VBA Empty Re: [Resolvido]Ler ficheiro .json pelo VBA

    Mensagem  RicMelo 16/4/2018, 22:50

    Uma duvida:

    na parte: separaEntreDuasStringsXML((strTexto), "path" & """: """, """, """ & "host")

    se em vez de começar e acabar com (path": ") e (", "host) for só com: "

    nao estou percebendo como fazer!

    Cumprimentos
    Pedro Melo
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    [Resolvido]Ler ficheiro .json pelo VBA Empty Re: [Resolvido]Ler ficheiro .json pelo VBA

    Mensagem  FabioPaes 16/4/2018, 23:07

    Ficou um pouco confuso, devido o fato de no Texto ter " e :, sendo que o valor deve ser informado entre "" entao ficou confuso mesmo...


    Mas a Função deve ser informada assim:

    separaEntreDuasStringsXML(stringComValor,"ValorInicio","ValorFim")


    Digamos que eu tenha na StringComValor=" xxxx ValorInicio abcd123ValorFim "


    Se rodar a função, ele retornará: abcd123


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    RicMelo
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 14
    Registrado : 20/03/2018

    [Resolvido]Ler ficheiro .json pelo VBA Empty Re: [Resolvido]Ler ficheiro .json pelo VBA

    Mensagem  RicMelo 16/4/2018, 23:17

    Tentar simplificar meu problema!

    digamos que tenho uma string strTexto com a seguinte informaçao:

    "aqui esta a informaçao pretendida" /correcto

    usando a funçao separaEntreDuasStringsXML() como devo colocar a string inicio e fim para obter o resultado:

    aqui esta a informaçao pretendida

    Tenho andado de volta dos " para conseguir obter o resultado mas sem sucesso.
    Nao consigo perceber como fazer a funçao perceber que a string de inicio é " e a de fim " /correcto

    Cumprimentos
    Pedro Melo
    avatar
    RicMelo
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 14
    Registrado : 20/03/2018

    [Resolvido]Ler ficheiro .json pelo VBA Empty Re: [Resolvido]Ler ficheiro .json pelo VBA

    Mensagem  RicMelo 16/4/2018, 23:41

    Consegui resolver criando uma string:

    strInicio = Left$(strTexto, 1)

    esta string vai buscar o primeiro valor da string que é "

    e depois uso :

    strTexto = Replace(separaEntreDuasStringsXML((strTexto), "", " /correcto"), strInicio, "")
    LerRegedit = strTexto


    Ai Obtenho o resultado:

    aqui esta a informaçao pretendida


    Unico problema é se em vez de " a primeira coisa na string for uma letra
    ai ele ira remover a letra e o resultado podera ser completamente errado.

    Exemplo:

    strTexto = a "aqui esta a informaçao pretendida" /correcto
    strInicio = Left$(strTexto, 1) (strInicio = a)
    strTexto = Replace(separaEntreDuasStringsXML((strTexto), "", " /correcto"), strInicio, "")
    LerRegedit = strTexto

    Resultado:

    LerRegedit =  "qui est  informço pretendid"



    Cumprimentos
    Pedro Melo
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    [Resolvido]Ler ficheiro .json pelo VBA Empty Re: [Resolvido]Ler ficheiro .json pelo VBA

    Mensagem  FabioPaes 17/4/2018, 15:15

    Respondendo a Mensagem Anterior:

    Chame a função assim:

    MsgBox separaEntreDuasStringsXML(Me.Texto0, """", """")


    Observe que como o inicio é uma aspas " eu devo informar """" 4x para que o sistema intenda que é a abertura de uma aspas. kkkkkk

    Isso so acontece pq o Inicio e o FIm são caracteres reservados! que justamente é o que delimita o texto que queremos.


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    RicMelo
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 14
    Registrado : 20/03/2018

    [Resolvido]Ler ficheiro .json pelo VBA Empty Re: [Resolvido]Ler ficheiro .json pelo VBA

    Mensagem  RicMelo 17/4/2018, 16:22

    Muito Obrigado. Agora sim esta a funcionar, eu bem tinha tentado com 2, 3, 4, 5, 6.... """ ja nem sei a quantas andava!
    sempre fica mais fiavel agora que com a strInicio = Left$(strTexto, 1) pois agora temos a certeza do que removemos!

    Cumprimentos
    Pedro Melo
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    [Resolvido]Ler ficheiro .json pelo VBA Empty Re: [Resolvido]Ler ficheiro .json pelo VBA

    Mensagem  FabioPaes 17/5/2018, 14:51

    Caso seja de Interesse de Alguem, aqui uma forma de interpretação de arquivo .json
    https://www.maximoaccess.com/t33325-consulta-cnpj-webservice-de-dados-de-cnpj-api-publica-com-resposta-em-json


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    Conteúdo patrocinado


    [Resolvido]Ler ficheiro .json pelo VBA Empty Re: [Resolvido]Ler ficheiro .json pelo VBA

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 17:33