Jak okresowo aktualizować arkusz programu Excel za pomocą timera VBA

Podziel się teraz:

W tym artykule pokazano, jak odświeżać arkusz lub wykres w regularnych odstępach czasu. To ćwiczenie tworzy licznik czasu, który odświeża arkusz co minutę, odzwierciedlając zmiany w danych źródłowych.

W tym artykule założono, że czytelnik ma wyświetloną wstążkę programisty i zna edytor VBA. Jeśli nie, wybierz Google „Excel Developer Tab” lub „Excel Code Window”.

Można znaleźć przykład skoroszytu używanego w tym ćwiczeniu w tym miejscu.

Zastosowania raportowania dynamicznego mogą być następujące:

  • Odczyt zastrzeżonej bazy danych dostarczonej wraz z systemem telefonicznym Twojej firmy w celu analizy rozmów.
  • Generuj losową liczbę co 15 minut w celu zdobycia nagrody lub loterii.
  • Automatycznie wysyłaj wiadomości e-mail z lokalnej bazy danych, gdy zostaną spełnione określone poziomy. (tutaj licznik czasu zdecyduje, czy uruchomić proces, czy nie, w oparciu o osiągnięte poziomy).

lub ten, którego użyjemy:

  • Wyświetl najnowszy kurs wymiany USD/EUR z Internetu.

Dane są pobierane z Witryna Yahoo Finance co minutę. Po pomyślnym przetestowaniu należy zastąpić dłuższy interwał przetwarzania.

Interfejs

Otwórz nowy skoroszyt;

Nazwij pierwszy arkusz „Wyświetl”. Ponieważ tabele od D8 do E11 zostaną wypełnione z sieci, nie trzeba wprowadzać wartości ani nagłówków wierszy. Reszta jest opcjonalna.Przygotuj interfejs

Kod

Otwórz okno kodu VBA i wstaw moduł. Skopiuj poniższy kod do modułu.

Zdarzenie Auto_Open uruchamia Timer w momencie otwarcia skoroszytu i zatrzymuje się w momencie jego zamknięcia, chyba że kod zostanie przerwany przez programistę w trakcie tworzenia.Kod 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

Wynik

Co n minut tabela w Arkuszu „Wyświetl” będzie aktualizowana ze strony internetowej Yahoo. Więcej informacji na temat bardziej złożonych połączeń danych można znaleźć w witrynie firmy Microsoft.

Odzyskiwanie uszkodzonych skoroszytów

Excel może ulegać nieoczekiwanym awariom, prawdopodobnie z powodu braku zasobów. W takich przypadkach plik źródłowy może zostać nieodwracalnie uszkodzony i nie będzie można go ponownie otworzyć. W przypadku braku regularnego tworzenia kopii zapasowych, narzędzie do odzyskiwania danych uszkodzony Excel pliki byłyby nieocenione.

Wprowadzenie autora:

Felix Hooker jest ekspertem w dziedzinie odzyskiwania danych w DataNumen, Inc., która jest światowym liderem w technologiach odzyskiwania danych, w tym poprawka rar i oprogramowanie do odzyskiwania sql. po więcej informacji odwiedź www.datanumen.com

Podziel się teraz:

Możliwość dodawania komentarzy nie jest dostępna.