Sådan opdateres et Excel-regneark regelmæssigt med en VBA-timer

Denne artikel viser, hvordan du opdaterer et regneark eller diagram med regelmæssige intervaller. Denne øvelse bygger en timer, der opdaterer regnearket hvert minut og afspejler ændringer i kildedataene.

Denne artikel antager, at læseren har udviklerbåndet vist og er fortrolig med VBA Editor. Hvis ikke, bedes du Google “fanen Excel-udvikler” eller “vinduet Excel-kode”.

Et eksempel på den projektmappe, der bruges i denne øvelse, kan findes link..

Anvendelse af dynamisk rapportering kan være:

  • Læsning af den proprietære database, der følger med dit firmas telefonsystem, for at analysere opkald.
  • Generer et tilfældigt tal hvert 15. minut til præmie- eller lodtrækningsformål.
  • Send automatisk e-mails fra din lokale database, når visse niveauer er opfyldt. (her bestemmer timeren, om processen skal affyres eller ej, baseret på opnåede niveauer).

eller den, vi vil bruge:

  • Vis den seneste USD / EUR-valutakurs fra internettet.

Dataene udvindes fra Yahoo Finance-websted hvert minut. Når det er testet, skal et længere behandlingsinterval erstattes.

Interface

Åbn en ny projektmappe;

Navngiv det første ark "Display". Da tabellen D8 til E11 udfyldes fra internettet, behøver værdier eller rækkeoverskrifter ikke at blive indtastet. Resten er valgfri.Forbered grænsefladen

Koden

Åbn VBA-kodevinduet, og indsæt et modul. Kopiér nedenstående kode i modulet.

Auto_Open-hændelsen starter timeren, når projektmappen åbnes, og stopper, når projektmappen lukkes, medmindre koden afbrydes af udvikleren under udviklingen.VBA-kode

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

Resultat

Hvert n. Minut opdateres tabellen i Ark "Display" fra Yahoo-webstedet. Se Microsofts websted for mere komplekse dataforbindelser.

Gendannelse af beskadigede projektmapper

Excel har været kendt for at gå ned på uventede tidspunkter, sandsynligvis relateret til en mangel på ressourcer. I sådanne tilfælde kan kildefilen blive uigenkaldeligt beskadiget og nægte at åbne igen. I mangel af hyppig sikkerhedskopiering er et værktøj til gendannelse ødelagt Excel filer ville være uvurderlige.

Forfatter Introduktion:

Felix Hooker er en datagendannelsesekspert i DataNumen, Inc., som er verdens førende inden for datagendannelsesteknologier, herunder rar-rettelse og SQL-genopretningssoftwareprodukter. For mere information besøg www.datanumen.com

Kommentarer er lukket.