Abfrage (Query) in VBA starten
Schritt-für-Schritt-Anleitung
Um eine Abfrage (Query) in VBA zu starten, befolge diese Schritte:
-
Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.
-
In der linken Seitenleiste findest du das Projekt, das deine Excel-Datei repräsentiert. Doppelklicke auf „DieseArbeitsmappe“.
-
Füge den folgenden Code in das Fenster ein:
Private Sub Workbook_Open()
ThisWorkbook.Worksheets("TabelleMitDemQuery").QueryTables(1).Refresh BackgroundQuery:=False
End Sub
-
Stelle sicher, dass du den Blattnamen ("TabelleMitDemQuery") anpasst, um auf dein spezifisches Arbeitsblatt mit der Abfrage zu verweisen.
-
Schließe den VBA-Editor und speichere die Datei.
-
Schließe und öffne die Excel-Datei erneut, um zu testen, ob die Abfrage beim Öffnen automatisch aktualisiert wird.
Häufige Fehler und Lösungen
Fehler: Die Abfrage wird nicht aktualisiert.
Lösung: Überprüfe, ob der Blattname im VBA-Code korrekt ist. Stelle sicher, dass die QueryTables korrekt eingerichtet sind und die Verbindung zu den externen Daten funktioniert.
Fehler: Laufzeitfehler 1004.
Lösung: Dies kann passieren, wenn die Abfrage nicht existiert oder der Index der QueryTables falsch ist. Stelle sicher, dass die Query auf dem angegebenen Blatt vorhanden ist.
Alternative Methoden
Eine alternative Methode besteht darin, Power Query zu verwenden. Du kannst eine Power Query in VBA starten, indem du diese Schritte befolgst:
- Erstelle die gewünschte Power Query in Excel.
-
Verwende den folgenden VBA-Code, um die Power Query zu aktualisieren:
Sub RefreshPowerQuery()
Dim conn As WorkbookConnection
For Each conn In ThisWorkbook.Connections
If conn.Type = xlConnectionTypeWORKSHEET Then
conn.Refresh
End If
Next conn
End Sub
Diese Methode ist nützlich, wenn du mehrere Queries verwalten möchtest.
Praktische Beispiele
Wenn du eine Excel-Datei mit mehreren Abfragen hast, kannst du diese auch in einer Schleife aktualisieren:
Sub RefreshAllQueries()
Dim ws As Worksheet
Dim qt As QueryTable
For Each ws In ThisWorkbook.Worksheets
For Each qt In ws.QueryTables
qt.Refresh BackgroundQuery:=False
Next qt
Next ws
End Sub
Diese Methode stellt sicher, dass alle Abfragen in deiner Arbeitsmappe aktualisiert werden.
Tipps für Profis
- Verwende
BackgroundQuery:=True, wenn du die Abfragen im Hintergrund aktualisieren möchtest. Dies kann die Benutzerfreundlichkeit verbessern, da der Benutzer weiterhin mit Excel arbeiten kann.
- Nutze Fehlerbehandlung im VBA-Code, um mögliche Probleme abzufangen. Beispielsweise kannst du mit
On Error Resume Next arbeiten, um die Ausführung nicht zu stoppen.
- Dokumentiere deinen Code mit Kommentaren, um die Verständlichkeit für andere Benutzer zu erhöhen.
FAQ: Häufige Fragen
1. Wie kann ich eine bestimmte Abfrage aktualisieren?
Du kannst den Index der QueryTables ändern, um eine bestimmte Abfrage zu aktualisieren. Beispiel:
ThisWorkbook.Worksheets("MeinBlatt").QueryTables(2).Refresh
2. Was ist der Unterschied zwischen einer QueryTable und einer Power Query?
Eine QueryTable ist eine einfache Möglichkeit, Daten aus einer externen Quelle in Excel zu importieren und zu aktualisieren, während Power Query eine leistungsstärkere und flexiblere Datenbearbeitungs- und Transformationsfunktion bietet.
3. Kann ich VBA verwenden, um eine Adobe Target automatisierte Personalisierung zu starten?
Das ist nicht direkt möglich, da Adobe Target eine separate Plattform ist. Du kannst jedoch Daten aus Excel an Adobe Target über API-Integration senden, aber das erfordert zusätzliche Programmierung.