Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datumsanzeige von "Daten aktualisieren"

Forumthread: Datumsanzeige von "Daten aktualisieren"

Datumsanzeige von "Daten aktualisieren"
28.07.2014 09:50:05
"Daten
Hallo,
ich habe in Excel eine Microsoft Query zu einer anderen Datenquelle erstellt. Sobald ich in Excel auf DATEN - Alle Aktualisieren drücke wird diese Query aktualisiert. Ist es möglich via Makro oder ähnlichem das Datum der letzten Aktualisierung anzeigen zu lassen ? Also ich meine nicht zuletzt geändert oder zuletzt gespeichert.... Sondern "nur" zuletzt aktualisiert...
gruss Markus

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datumsanzeige von "Daten aktualisieren"
28.07.2014 10:00:51
"Daten
Hallo,
klar, du brauchst nur in einer Klasse des QueryTable das AfterRefresh-Event abfangen.
Sieh: http://www.office-loesung.de/ftopic453968_0_0_asc.php
Musst du zwar ein wenig anpassen, aber bei VBA-Gut sollte das kein Problem sein.
Gruß
Nepumuk

Anzeige
AW: Datumsanzeige von "Daten aktualisieren"
28.07.2014 15:51:00
"Daten
Hallo Nepumuk, vielen Dank für die schnelle Antwort. Jedoch bekomme ich es wohl doch nicht so einfach hin.... Mit Klassenmodulen habe ich noch nicht gearbeitet. Das Klassenmodul AfterRefresh ist bei mir auch nirgends vorhanden. Ich wüsste auch nicht welchen VBA Code ich dort eingeben muss...
Ich habe es hiermit versucht:
Public WithEvents qt As QueryTable
Private Sub Qt_AfterRefresh(ByVal Erfolg As Boolean)
' Declare variables.
Dim a As Integer
Dim My_Prompt As String
' Initialize prompt text for message box.
My_Prompt = "Data will be refreshed."
' Get YES or NO result from the message box
a = MsgBox("Do you want to refresh the data now?", vbYesNo)
' Check to see whether YES or NO was selected.
If a = vbNo Then
' Change prompt text for message box.
My_Prompt = "Data will not be refreshed."
' Cancels the Query Refresh.
Cancel = True
End If
' Displays message box before refresh (or non-refresh) occurs.
MsgBox My_Prompt
End Sub
Mit diesem Code passiert gar nichts nach dem aktualisieren...
Könntest DU mir helfen ?
VIELEN DANK.

Anzeige
AW: Datumsanzeige von "Daten aktualisieren"
28.07.2014 16:46:50
"Daten
Hallo,
du brauchst doch nur den Code 1:1 übernehmen.
AfterRefresh ist kein Klassenmodul sondern ein Event des QueryTable-Objektes. Muss ich jetzt After und Event übersetzen? Außerdem ist der im Klassenmodul schon drin.
Was ich meinte, statt:
MsgBox "Formatieren"
kommt dein Eintrag des Datum. Das ist doch nicht zu viel verlangt einer Anleitung zu folgen, den Code in deine Mappe zu kopieren und eine einzige Programmzeile auszutauschen.
Und erzähl keinen Unsinn "Ich hab noch nie mit Klassen gearbeitet". Doch hast du garantiert oder was meinst du sind die Module der Tabellen, der Arbeitsmappe oder eines Userforms? Alles Klassen, nur diesmal musst du ein eigenes Klassenmodul erstellen der das QueryTable bringt kein eigenes mit.
Deine komische Abfrage ob das QueryTable jetzt aktualisiert werden soll, hat natürlich im AfterRefresh keinen Sinn, denn in dem Moment ist es schon passiert.
Und noch ein Tipp, wenn ich deinen Code so ansehe, dann ist das maximal Basiswissen in VBA und keineswegs gut. Bei gut setze ich das Arbeiten mit selbst erstellten Klassen voraus und entsprechend gestalte ich meine Antwort.
Gruß
Nepumuk
Anzeige
Anzeige

Infobox / Tutorial

Datumsanzeige der letzten Aktualisierung in Excel


Schritt-für-Schritt-Anleitung

Um das Datum der letzten Aktualisierung in Excel anzuzeigen, kannst du das AfterRefresh-Event des QueryTable-Objektes verwenden. Hier ist eine Schritt-für-Schritt-Anleitung, wie du dies umsetzen kannst:

  1. Öffne den VBA-Editor in Excel, indem du ALT + F11 drückst.

  2. Erstelle ein neues Klassenmodul:

    • Klicke mit der rechten Maustaste auf "VBAProject (deineArbeitsmappe)".
    • Wähle "Einfügen" > "Klassenmodul".
    • Benenne das Modul, z.B. clsQueryTable.
  3. Füge folgenden Code in das Klassenmodul ein:

    Public WithEvents qt As QueryTable
    
    Private Sub qt_AfterRefresh(ByVal Erfolg As Boolean)
        If Erfolg Then
            Sheets("DeinBlatt").Range("A1").Value = "Letzte Aktualisierung: " & Now
        End If
    End Sub
  4. Setze den Code für dein QueryTable in ein reguläres Modul:

    Dim myQueryTable As clsQueryTable
    
    Sub InitializeQueryTable()
        Set myQueryTable = New clsQueryTable
        Set myQueryTable.qt = Sheets("DeinBlatt").QueryTables(1) ' Index anpassen
    End Sub
  5. Rufe die InitializeQueryTable-Subroutine auf, um das AfterRefresh-Event zu aktivieren.

Jedes Mal, wenn du die Daten aktualisierst (z.B. über "DATEN - Alle Aktualisieren"), wird das Datum der letzten Aktualisierung in Zelle A1 des angegebenen Blattes angezeigt.


Häufige Fehler und Lösungen

  • Fehler: "Nothing happens after refresh"
    Lösung: Stelle sicher, dass das AfterRefresh-Event korrekt zugewiesen ist und dass das QueryTable tatsächlich existiert. Überprüfe auch, ob das Blatt und die Zelle, in die das Datum geschrieben werden soll, richtig angegeben sind.

  • Fehler: "Klassenmodul nicht gefunden"
    Lösung: Vergewissere dich, dass du ein Klassenmodul erstellt hast und den richtigen Namen im Code verwendest.


Alternative Methoden

Wenn du keine VBA-Lösungen verwenden möchtest, kannst du auch Power Query in Excel nutzen, um die Daten zu aktualisieren. In Power BI gibt es ähnliche Möglichkeiten, das Aktualisierungsdatum anzuzeigen. Mit der Funktion DateTime.LocalNow() könntest du das aktuelle Datum und die Uhrzeit als Teil deiner Datenquelle einfügen.


Praktische Beispiele

Ein praktisches Beispiel zur Verwendung des AfterRefresh-Events:

Private Sub qt_AfterRefresh(ByVal Erfolg As Boolean)
    If Erfolg Then
        Sheets("Daten").Range("B2").Value = "Daten wurden zuletzt aktualisiert am: " & Format(Now, "dd.mm.yyyy HH:mm:ss")
    End If
End Sub

Dieses Beispiel speichert das Datum und die Uhrzeit der letzten Aktualisierung in Zelle B2 des Blattes "Daten".


Tipps für Profis

  • Verwende Fehlerbehandlung in deinem VBA-Code, um sicherzustellen, dass dein Makro auch bei unerwarteten Problemen stabil bleibt.
  • Überlege, ob du die Excel VBA Table Update Events für deine Anwendung nutzen kannst, um noch spezifischere Anpassungen vorzunehmen.
  • Halte deinen Code modular, um die Wartbarkeit zu erhöhen und die Wiederverwendbarkeit zu fördern.

FAQ: Häufige Fragen

1. Wie kann ich das Datum der letzten Aktualisierung in einer Power BI-Datenquelle anzeigen?
In Power BI kannst du das Aktualisierungsdatum anzeigen, indem du eine benutzerdefinierte Spalte hinzufügst, die das aktuelle Datum speichert, wenn die Daten aktualisiert werden.

2. Was ist der Unterschied zwischen "Zuletzt geändert" und "Zuletzt aktualisiert"?
"Zuletzt geändert" bezieht sich auf Änderungen an der Datei selbst, während "Zuletzt aktualisiert" sich ausschließlich auf die Aktualisierung der Daten aus einer externen Quelle bezieht.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige