Como atualizar uma planilha do Excel periodicamente com um VBA Timer

Compartilhe agora:

Este artigo mostra como atualizar uma planilha ou gráfico em intervalos regulares. Este exercício cria um cronômetro que atualiza a planilha a cada minuto, refletindo as alterações nos dados de origem.

Este artigo pressupõe que o leitor tenha a faixa Desenvolvedor exibida e esteja familiarizado com o Editor VBA. Se não, por favor, Google “Excel Developer Tab” ou “Excel Code Window”.

Um exemplo da pasta de trabalho usada neste exercício pode ser encontrado aqui..

Os usos de relatórios dinâmicos podem ser:

  • Leitura da base de dados proprietária fornecida com o sistema telefónico da sua empresa para analisar as chamadas.
  • Gere um número aleatório a cada 15 minutos para fins de prêmio ou sorteio.
  • Envie e-mails automaticamente de seu banco de dados local quando determinados níveis forem atendidos. (aqui o timer decidirá se dispara o processo ou não, com base nos níveis alcançados).

ou, o que usaremos:

  • Exiba a taxa de câmbio USD/EUR mais recente da Internet.

Os dados são extraídos do Site de finanças do Yahoo cada um minuto. Uma vez testado com sucesso, um intervalo de processamento mais longo deve ser substituído.

A interface

Abra uma nova pasta de trabalho;

Nomeie a primeira folha “Exibir”. Uma vez que a tabela D8 a E11 será preenchida a partir da web, os valores ou títulos de linha não precisam ser inseridos. O resto é opcional.Preparar a interface

O código

Abra a janela de código VBA e insira um módulo. Copie o código abaixo no módulo.

O evento Auto_Open inicia o temporizador quando a pasta de trabalho é aberta e o interrompe quando a pasta de trabalho é fechada, a menos que o código seja interrompido pelo desenvolvedor durante o desenvolvimento.Código VBA

Sub Auto_Open()
AlertTime = Now + TimeValue("00:01:00") 'interval in minutes
Application.OnTime AlertTime, "Ticker"      'call Sub Ticker, below
End Sub

Sub Ticker()
    Dim currBuy As String
    Dim currSell As String

    Range("D8:F11").ClearContents            'prepare the destination for the web data
    currBuy = "USD"
    currSell = "EUR"
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://finance.yahoo.com/q?s=" & currBuy & currSell & "=X", Destination:=Range("$D$8"))
        .Name = "q?s=" & currSell & currBuy & "=X"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = """table1"""
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
    AlertTime = Now + TimeValue("00:01:00") ‘move trigger on a minute
    Application.OnTime AlertTime, "Ticker"
End Sub

O Resultado

A cada n minutos, a tabela na planilha “Exibir” será atualizada no site do Yahoo. Consulte o site da Microsoft para conexões de dados mais complexas.

Recuperando pastas de trabalho corrompidas

O Excel é conhecido por apresentar falhas inesperadas, provavelmente devido à falta de recursos. Nesses casos, o arquivo de origem pode ser danificado irremediavelmente e se recusar a reabrir. Na ausência de backups frequentes, uma ferramenta para recuperação é essencial. Excel corrompido arquivos seriam inestimáveis.

Introdução do autor:

Felix Hooker é um especialista em recuperação de dados em DataNumen, Inc., líder mundial em tecnologias de recuperação de dados, incluindo correção rar e produtos de software de recuperação SQL. Para mais informações visite www.datanumen.com

Compartilhe agora:

Comentários estão fechados.