ActiveWorkbook.Queries.Add mit Parametern in Excel VBA
Schritt-für-Schritt-Anleitung
Um eine Queryabfrage mit Parametern zu automatisieren, kannst Du den folgenden VBA-Code verwenden. Dies ermöglicht es Dir, eine Variable für den Dateinamen zu nutzen, um verschiedene PDF-Dateien zu lesen. Hier ist der grundlegende Aufbau des Codes:
Sub QueryMitParameter()
Dim Dateiname2 As String
Dateiname2 = "c:\DeinPfad\DateinameX.pdf"
ActiveWorkbook.Queries.Add Name:="Page001", Formula:= _
"let" & Chr(13) & "" & Chr(10) & _
" Quelle = Pdf.Tables(File.Contents(""" & Dateiname2 & """), [Implementation=""1.1""])," & Chr(13) & "" & Chr(10) & _
" Page1 = Quelle{[Id=""Page001""]}[Data]," & Chr(13) & "" & Chr(10) & _
" #""Höher gestufte Header"" = Table.PromoteHeaders(Page1, [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & _
" #""Geänderter Typ"" = Table.TransformColumnTypes(#""Höher gestufte Header"",{{""Column1"", type text}, {""Column2"", type text}, {""Column3"", type text}, {""Column4"", type text}, {""Column5"", type text}, {""Report-ID 2540"", type text}, {""Column7"", Int64.Type}, {""Column8"", type text}, {""Column9"", type text}})" & Chr(13) & "" & Chr(10) & _
"in" & Chr(13) & "" & Chr(10) & _
" #""Geänderter Typ"""
End Sub
Stelle sicher, dass Du den Dateipfad zu Deiner PDF-Datei anpasst. Mit diesem Code kannst Du die ActiveWorkbook.Queries.Add Methode verwenden, um eine neue Query mit einem Parameter zu erstellen.
Häufige Fehler und Lösungen
-
Fehler: "Der Dateipfad ist ungültig"
- Lösung: Überprüfe den Dateipfad und stelle sicher, dass die Datei existiert und der Pfad korrekt eingegeben ist.
-
Fehler: "Das M-Skript konnte nicht ausgeführt werden"
- Lösung: Achte darauf, dass die Syntax des M-Codes korrekt ist. Verwende die
&-Operatoren richtig, um Textteile und Variablen zu verketten.
-
Fehler: "Query gibt leere Ergebnisse zurück"
- Lösung: Stelle sicher, dass die Query-Parameter korrekt sind und dass die Daten in der PDF-Datei vorhanden sind.
Alternative Methoden
Falls Du keine VBA verwenden möchtest, kannst Du auch Power Query direkt in Excel verwenden, um die Daten zu importieren und mit Parametern zu arbeiten. In Power Query kannst Du Parameter definieren und diese in Deinen Abfragen nutzen, ohne VBA zu schreiben.
Praktische Beispiele
Hier sind einige Beispiele, wie Du die ActiveWorkbook.Queries.Add Methode effektiv nutzen kannst:
-
Einfaches Beispiel mit festem Dateinamen:
ActiveWorkbook.Queries.Add Name:="FixedQuery", Formula:= "let ... in ... "
-
Beispiel mit Benutzerinteraktion:
Dim Dateiname2 As String
Dateiname2 = InputBox("Gib den Pfad zur PDF-Datei ein:")
ActiveWorkbook.Queries.Add Name:="UserQuery", Formula:= "let ... in ... "
Tipps für Profis
- Nutze die
ActiveWorkbook.Queries Sammlung, um alle Queries im aktuellen Workbook zu verwalten.
- Experimentiere mit der
thisworkbook.queries Methode, um auf Queries in einem bestimmten Workbook zuzugreifen.
- Achte auf die korrekte Verwendung von
Chr(13) und Chr(10) für Zeilenumbrüche in Deinen Formeln.
FAQ: Häufige Fragen
1. Was ist der Unterschied zwischen ActiveWorkbook.Queries.Add und ThisWorkbook.Queries.Add?
ActiveWorkbook bezieht sich auf das aktuell aktive Workbook, während ThisWorkbook das Workbook bezeichnet, in dem der VBA-Code ausgeführt wird.
2. Kann ich mehrere Parameter in einer Query verwenden?
- Ja, Du kannst mehrere Variablen definieren und diese in Deiner Query-Formel nutzen, indem Du sie entsprechend verkettest.
3. Wie kann ich meine Queries nachträglich bearbeiten?
- Du kannst die
Queries-Sammlung verwenden, um bestehende Queries zu finden und deren Formeln zu ändern oder neu zu definieren.
4. Funktioniert dieser Code in allen Excel-Versionen?
- Der Code sollte in Excel 2016 und höheren Versionen funktionieren, die Power Query unterstützen.