Einmalige Aktualisierung von Excel-Tabellen mit VBA
Schritt-für-Schritt-Anleitung
Um alle SQL-Tabellen in Excel mit VBA einmal täglich zu aktualisieren, folge diesen Schritten:
-
Öffne den VBA-Editor:
- Drücke
ALT + F11, um den VBA-Editor zu öffnen.
-
Modul für Workbook_Open erstellen:
-
Standardmodul hinzufügen:
Public Sub Start()
Const RUN_DATE As String = "Gelaufen"
Dim objName As Name
Dim dtmRunDate As Date
For Each objName In ThisWorkbook.Names
If objName.Name = RUN_DATE Then Exit For
Next
If objName Is Nothing Then
Call ThisWorkbook.Names.Add(Name:=RUNDATE,
RefersTo:=Array(Date - 1), Visible:=False)
Else
Set objName = Nothing
End If
dtmRunDate = CDate(Evaluate(RUN_DATE)(1))
If dtmRunDate < Date Then
Call ThisWorkbook.RefreshAll
ThisWorkbook.Names(RUN_DATE).RefersTo = Array(Date)
Call ThisWorkbook.Save
End If
End Sub
-
Manuelle Berechnung aktivieren:
- Stelle sicher, dass die Berechnung auf „Manuell“ gesetzt ist, um die Leistung zu optimieren.
-
Wartezeit hinzufügen:
- Verwende
Application.OnTime, um eine Verzögerung zwischen dem Aktualisieren der Daten und der Berechnung der Pivottabellen einzufügen.
Häufige Fehler und Lösungen
Fehler: Laufzeitfehler '1004'
Dieser Fehler tritt auf, wenn ein SQL-Server nicht erreichbar ist oder die Datenquelle nicht existiert. Überprüfe die Verbindungseinstellungen und stelle sicher, dass du Zugriff auf die Daten hast.
Fehler: Daten werden nicht aktualisiert
Wenn Excel kontinuierlich „Daten werden abgerufen“ anzeigt, kann dies an einer fehlerhaften Verbindung oder an einem Timeout liegen. Stelle sicher, dass alle Verbindungen korrekt eingerichtet sind.
Alternative Methoden
Eine andere Methode zur Aktualisierung von Daten in Excel ist die Verwendung von Power Query. Dies ermöglicht dir, Daten aus verschiedenen Quellen zu importieren und zu transformieren, bevor du sie in deine Excel-Tabelle integrierst.
Um Daten aus SAP in Excel automatisch zu aktualisieren, kannst du spezielle Power Query-Verbindungen nutzen, um die Effizienz zu steigern.
Praktische Beispiele
Hier ist ein einfaches Beispiel für einen VBA-Code, der alle Daten aktualisiert und anschließend die Berechnung durchführt:
Sub UpdateAndCalculate()
ThisWorkbook.RefreshAll
Application.Calculate
End Sub
Dieses Skript kann in einem Standardmodul gespeichert werden und bei Bedarf ausgeführt werden.
Tipps für Profis
- Verwende
thisworkbook.refreshall: Dieser Befehl aktualisiert alle Datenverbindungen in der Arbeitsmappe.
- Optimierung der Performance: Reduziere die Datenmenge, die aktualisiert wird, um die Leistung deines Excel-Dokuments zu verbessern.
- Speicher regelmäßig: Füge
Call ThisWorkbook.Save hinzu, um sicherzustellen, dass alle Änderungen gespeichert werden.
FAQ: Häufige Fragen
1. Wie kann ich sicherstellen, dass das Makro nur einmal pro Tag ausgeführt wird?
Durch die Implementierung eines Datumsprüfungsmechanismus im VBA-Code, der überprüft, ob das Makro bereits an diesem Tag ausgeführt wurde.
2. Kann ich auch Währungskurse automatisch aktualisieren?
Ja, du kannst externe Datenquellen verwenden, um Währungskurse zu importieren. Hierbei ist es hilfreich, die Datenverbindung in Excel zu konfigurieren, um regelmäßig Updates zu erhalten.
3. Was ist die OnTime-Methode?
Die OnTime-Methode erlaubt es dir, ein Makro zeitverzögert auszuführen, was besonders nützlich ist, um Prozesse zu steuern und Verzögerungen zwischen verschiedenen Operationen einzufügen.