none
Atualização de Dados (Web)

    Pergunta

  •  

    Prezados,

     

    Gostaria de duas ajudas (relacionadas ao mesmo tempo).

     

    1) Tenho uma planilha onde faço a importação de dados externos ("nova consulta à web").
    Gostaria de saber como faço para que esses dados sejam atualizados automaticamente (sem precisar ficar clicando com botão direito do mouse em cima da consulta).
    Consegui fazer esse tipo de atualização automatica com uma tabela dinamica, mas não estou conseguindo com esses dados externos.

     

     

    2) Exemplo: Nesse planilha tenho celulas (campos) com datas. Minha "consulta à web" faz uma importação de valores referente a data pesquisada.
    Gostaria que, ao ser preenchida a celula com o valor correspondente a ela, ela não fosse mais atualizada. Que o valor nela contido ficasse  "fixado".
    Isso porque, junto a consulta à web, a planilha tera uma função de procv .... quero evitar que as datas ja consultadas/preenchidas fiquem com o famoso "#N/D".

     

    Alguem sabe como me ajudar com essas questões ?

     

    Abs,

    Fabiano Lima

    quinta-feira, 20 de março de 2008 12:04

Respostas

  • Fabiano,

    Quanto à questão 1, vc poderia atrelar a atualização dos dados externos a um evento de planilha como, por exemplo:

    Code Snippet

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ThisWorkbook.RefreshAll
    End Sub

     

     

    Lembrando que as atualizações constantes podem deixar o arquivo lento, Outra solução possível é atrelar o comando ThisWorbook.RefreshAll a um botão de comando e clicar neste toda vez que precisar atualizar. Finalmente podemos colocar uma repetição do evento a intervalos de tempo especificados.

    O exemplo abaixo faz que o procedimento seja executado a cada 2 minutos contados a partir da abertura do arquivo:

     

    Code Snippet
    Private Sub Workbook_Open()
    Application.OnTime Now + TimeValue("00:02:00"), ActiveWorkbook.RefreshAll
    End Sub

     

     

    Veja qual das abordagens acima funciona melhor para a tua necessidade, ou vamos buscar outra(s) alternativa(s).

     

    Questão 2:

    Será que poderíamos substituir os PROCV por uma busca via macro, preservando os valores já calculados caso o resultado da busca resulte em erro?

     

    Aguardo seus comentários.

     

    [ ]s

    quinta-feira, 20 de março de 2008 16:26

Todas as Respostas

  • Fabiano,

    Quanto à questão 1, vc poderia atrelar a atualização dos dados externos a um evento de planilha como, por exemplo:

    Code Snippet

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ThisWorkbook.RefreshAll
    End Sub

     

     

    Lembrando que as atualizações constantes podem deixar o arquivo lento, Outra solução possível é atrelar o comando ThisWorbook.RefreshAll a um botão de comando e clicar neste toda vez que precisar atualizar. Finalmente podemos colocar uma repetição do evento a intervalos de tempo especificados.

    O exemplo abaixo faz que o procedimento seja executado a cada 2 minutos contados a partir da abertura do arquivo:

     

    Code Snippet
    Private Sub Workbook_Open()
    Application.OnTime Now + TimeValue("00:02:00"), ActiveWorkbook.RefreshAll
    End Sub

     

     

    Veja qual das abordagens acima funciona melhor para a tua necessidade, ou vamos buscar outra(s) alternativa(s).

     

    Questão 2:

    Será que poderíamos substituir os PROCV por uma busca via macro, preservando os valores já calculados caso o resultado da busca resulte em erro?

     

    Aguardo seus comentários.

     

    [ ]s

    quinta-feira, 20 de março de 2008 16:26
  • Prezado Adilson,

     

    Quanto a primeira questão, seu dica foi bastante util. A partir dela consegui atrelar a atualização ao cique de um botão de comando (que é o que eu preciso). Valeu.

     

    Quanto a segunda questão ... Como fazer essa busca via macro ? Uso o procv pois sem trabalhar +/- com essa função.

    O que eu quero é:

    Exemplo

    Fiz a atualização da planiha (com o valor desejado) para a data 18/03/2008.

    No dia 19/03/2008 quando for feita a busca no site com as informações, o valor do dia 18/03/2008 não estará mais lá, pois esse valor é atualizada diariamente e não fica o historico da data anterior.

    Portanto, quando a busca for feita para o dia 19, o valor que ja se encontra em 18 não pode ser alterado (mesmo que esse valor já não esteja mais na base de dados). No caso do procv no valor ref dia 18 apareceria "#N/D".

    Conseguiu entender ?

    Tem como trabalhar isso com macro?

     

    Abs,

     

    Fabiano Lima

    quinta-feira, 20 de março de 2008 16:41
  • Que bom já resolvemos a 1ª questão.

    Diz uma coisa: quando vc faz a atualização quantas linhas de informação são retornadas?

    O que sugiro é a cada atualização, os dados sejam transferidos para uma outra planilha dentro do teu arquivo que acumule os seus dados ao longo de várias atualizações e nesta condição vc realizaria o PROCV sobre esta base dados cumulativa.

    O que lhe parece?

    [ ]s

     

    quinta-feira, 20 de março de 2008 17:48
  • Prezado Adilson,

     

    Nem sei como explicar.

    Fou tentar exemplificar.

    Imagine que eu tenha uma Sheet chamada "taxas" e outra Sheet chamada "ptax".

    Na Sheet "taxas" eu terei (ja cadastradas) varias datas: 01/03/2008, 02/03/2008 , 04/03/2008 ...

    Na Sheet "ptax" eu terei a consulta à web, onde será feita uma busca no site e trará a taxa referente aquele dia da consulta. Nesse caso na Sheet "ptax" teriamos um resultado (por exemplo): dia 05/03/2008 ptax 2,1256.

     

    Como eu ja vou ter todas as datas pré cadastradas na Sheet "taxas" , quero que o valor de taxa do dia 05/03/2008 que foi preenchida na Sheet "ptax" seja transportado para o dia 05/03/2008 da Sheet "taxas".

     

    Nesse caso, minha ideia era fazer um procv na Sheet "taxas" de modo a buscar o valor na Sheet "ptax" (usando a data como referencia)

    Como no dia seguinte (06/03/2008) a Sheet "ptax" já não teria o valor do dia anterior (04/03/2008), esse campo, que fora preenchido anteriormente, ficaria com o #N/D.

     

    A explicação bate com sua ideia ?

     

    Abs,

     

    Fabiano Lima

    quinta-feira, 20 de março de 2008 19:13
  • Compreendi, o quadro geral.

    Quando vc realiza a consulta, a planilha "ptax" fica com a data na coluna A e a taxa na coluna B?

    Se isso ocorre, o que eu faria é:

    1. Manter a tua estrutura da planilha 'taxas"

    2. No procecimento que vc vai usar para atualizar a base de dados, acrescentar algumas linhas de comando para realizar a pesquisa na planilha ptax e retorná-la para taxas. Ficaria mais ou menos assim.

    Code Snippet
    Sub Pesquisar()
    Set ptax = Sheets("ptax")
    Set taxas = Sheets("taxas")
    N = ptax.Cells(ptax.Cells.Rows.Count, 1).End(xlUp).Row
    L = taxas.Cells(taxas.Cells.Rows.Count, 1).End(xlUp).Row
    For i = N To 1 Step -1
    Busca = ptax.Cells(i, 1).Value
        For k = L To 1 Step -1
        If taxas.Cells(k, 1) = Busca Then
        taxas.Cells(k, 2).Value = ptax.Cells(i, 2).Value
        Exit For
        End If
        Next k
    Next i
    End Sub

     

    Considerei que em ambas as planilhas, as datas estão localizadas na coluna A e as taxas na coluna B.

    Segue abaixo o link para o exemplo que montei.

    http://www.4shared.com/file/41400893/ae8e7e66/Pesq_taxa.html

    Vc pode alterar as datas e/ou valores na planilha 'ptax" e ver os resultados sobre a planilha "taxas".

    [ ]s e Boa Páscoa.

     

     

     

    quinta-feira, 20 de março de 2008 20:32
  • Ok.

    Vou dar uma verificada com calma digo se funciou.

    Valeu.

     

    Abs,

     

    Fabiano Lima

     

    quinta-feira, 20 de março de 2008 20:43