Hur man uppdaterar ett Excel-kalkylblad regelbundet med en VBA-timer

Den här artikeln visar hur du uppdaterar ett kalkylblad eller diagram med jämna mellanrum. Denna övning bygger en timer som uppdaterar kalkylbladet varannan minut, vilket återspeglar förändringar i källdata.

Den här artikeln förutsätter att läsaren har utvecklarbandet och är bekant med VBA Editor. Om inte, vänligen Google "Excel-fliken för utvecklare" eller "Excel-kodfönstret".

Ett exempel på arbetsboken som används i denna övning kan hittas här..

Användning av dynamisk rapportering kan vara:

  • Läser den proprietära databasen som medföljer företagets telefonsystem för att analysera samtal.
  • Skapa ett slumpmässigt nummer var 15: e minut för pris- eller tombolagsändamål.
  • Skicka automatiskt e-postmeddelanden från din lokala databas när vissa nivåer uppfylls. (här bestämmer timern om processen ska avfyras eller inte, baserat på uppnådda nivåer).

eller den vi kommer att använda:

  • Visa den senaste växelkursen USD / EUR från internet.

Data extraheras från Yahoo Finance webbplats varenda minut. När det väl har testats bör ett längre bearbetningsintervall ersättas.

Gränssnittet

Öppna en ny arbetsbok;

Namnge det första arket ”Display”. Eftersom tabellen D8 till E11 kommer att fyllas från webben behöver värden eller radrubriker inte anges. Resten är valfri.Förbered gränssnittet

Koden

Öppna VBA-kodfönstret och sätt in en modul. Kopiera koden nedan till modulen.

Händelsen Auto_Open startar timern när arbetsboken öppnas och stoppar när arbetsboken stängs, såvida inte koden avbryts av utvecklaren under utvecklingen.VBA-kod

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

Resultatet

Varannan minut uppdateras tabellen i Sheet “Display” från Yahoo-webbplatsen. Se Microsofts webbplats för mer komplexa dataförbindelser.

Återställa skadade arbetsböcker

Excel har varit känt för att krascha vid oväntade tillfällen, troligen relaterat till en dåvarande brist på resurser. I sådana fall kan källfilen skadas oåterkalleligt och vägra att öppnas igen. I avsaknad av frekvent säkerhetskopiering behövs ett verktyg för att återställa skadad Excel filer skulle vara ovärderliga.

Författarintroduktion:

Felix Hooker är en dataåterställningsexpert i DataNumen, Inc., som är världsledande inom teknik för återställning av data, inklusive rar-fix och mjukvaruprodukter för SQL-återställning. För mer information besök www.datanumen.com

Kommentarer är stängda.