Passwort Abfrage über Query automatisieren in Excel
Schritt-für-Schritt-Anleitung
-
Makro erstellen: Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
-
Neues Modul hinzufügen: Klicke auf "Einfügen" > "Modul".
-
VBA-Code eingeben: Füge den folgenden VBA-Code ein, um eine Passwortabfrage zu integrieren:
Sub Abfrage_Query()
Dim Passwort As String
Passwort = Application.InputBox("Bitte Passwort eingeben", Type:=2) ' Type 2 = Text
With ActiveSheet.QueryTables.Add(Connection:="FINDER;C:\***.dqy;PWD=" & Passwort, Destination:=Range("X1"))
.Name = "ELDIW6_R1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub
-
Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle das Makro Abfrage_Query aus und klicke auf "Ausführen". Gib das Passwort ein, wenn du dazu aufgefordert wirst.
Häufige Fehler und Lösungen
-
Syntaxfehler bei PWD=Passwort: Stelle sicher, dass du die Syntax korrekt verwendest. In Excel VBA ist die Verwendung von PWD nicht immer möglich. Übergebe das Passwort direkt in der Verbindungszeichenfolge.
-
Allgemeiner ODBC-Fehler: Überprüfe deine ODBC-Verbindungszeichenfolge auf korrekte Treiber- und Serverangaben. Stelle sicher, dass die Datenbank erreichbar ist.
Alternative Methoden
Eine alternative Methode ist die Verwendung von mehreren QueryTables, um Daten aus verschiedenen Datenbanken abzufragen. Hier ein Beispiel:
Sub Mehrere_Abfragen()
Dim connstring1 As String
Dim connstring2 As String
connstring1 = "ODBC;DRIVER={Microsoft ODBC for Oracle};UID=public_user;PWD=public;SERVER=pdpx.prod.berta"
connstring2 = "ODBC;DRIVER={Microsoft ODBC for Oracle};UID=public_user;PWD=public;SERVER=pdpx.test.berta"
With Sheets(1).QueryTables.Add(Connection:=connstring1, Destination:=Worksheets(1).Range("A1"))
.BackgroundQuery = False
.Sql = "SELECT * FROM Tabelle1"
.Refresh
End With
With Sheets(2).QueryTables.Add(Connection:=connstring2, Destination:=Worksheets(2).Range("A1"))
.BackgroundQuery = False
.Sql = "SELECT * FROM Tabelle2"
.Refresh
End With
End Sub
Praktische Beispiele
Hier ist ein praktisches Beispiel, wie du Daten aus zwei Oracle-Datenbanken vergleichen kannst. Verwende die oben genannten Verbindungsstrings und SQL-Befehle, um die gewünschten Daten abzurufen und in unterschiedlichen Worksheets anzuzeigen.
Tipps für Profis
-
Automatisierung optimieren: Verwende Schleifen, um mehrere Abfragen effizient auszuführen, anstatt sie einzeln zu definieren.
-
Passwortmanagement: Lagere sensible Informationen wie Passwörter nicht im Code, sondern nutze sichere Methoden zur Speicherung.
FAQ: Häufige Fragen
1. Wie kann ich das Passwort speichern, sodass ich es nicht jedes Mal eingeben muss?
Du kannst das Passwort in einer sicheren Variablen speichern oder eine Form zur Eingabe verwenden, die das Passwort speichert.
2. Funktioniert das auch mit Access-Datenbanken?
Ja, das Prinzip ist ähnlich; du musst jedoch die Verbindungszeichenfolge anpassen, um auf Access zuzugreifen.
3. Was mache ich, wenn ich einen Syntaxfehler bekomme?
Überprüfe die Syntax und stelle sicher, dass alle Variablen korrekt definiert sind und die Verbindungszeichenfolge richtig formatiert ist.