Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel Abfrage per VBA erstellen

Forumthread: Excel Abfrage per VBA erstellen

Excel Abfrage per VBA erstellen
02.07.2019 11:54:26
Alex
Hallo
Bin neu hier im Forum und habe ein Problem beim erstellen von einer Abfrage per VBA:
Da ich immer wieder Abfragen die mir eine Auflistung der PDF-Dateien in Ordnern erstellen muss, möchte ich mir ein makro dazu erstellen das diese Arbeit für mich übernimmt.
Meinen Code mittels Macrorecorder aufgenommen funktioniert auch soweit.
Mein Problem ist nur, das ich den Pfad der Abfrage die erstellt wird, auf die Zelle ("D2") beziehen möchte.
Mein Code:
Sub Abfrage()
Workbooks.Add
ActiveWorkbook.Queries.Add Name:="Test", Formula:= _
"let" & Chr(13) & "" & Chr(10) & "    Quelle = Folder.Files(""C: Mein Pfad"")" & Chr(13) _
_
& "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    Quelle"
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Test;Extended   _
_
Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [Test]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Test"
.Refresh BackgroundQuery:=False
End With
End Sub

Ich hoffe mir kann hierbei jemand weiter helfen.
Besten Dank schon mal im Voraus!
mfg
Alex
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Excel Abfrage per VBA erstellen
02.07.2019 17:25:50
Hajo_Zi
Hallom Alex,
ersetze
"C: Mein Pfad"
Durch Range("A23")
ich würde vermuten der Code geht nicht. Ich baue keine Datei nach.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Anzeige
AW: Excel Abfrage per VBA erstellen
03.07.2019 08:57:37
Alex
Hallo Hajo
Danke für die Antwort, jedoch klappt das leider nicht.
Ich bekomme die Fehlermeldung: Fehler beim Kompilieren: Erwartet: Anweisungsende
Ich hab eine Beispieldatei angehängt, vielleicht kann mir damit jemand weiter helfen.
Jedenfalls schon mal Danke!
https://www.herber.de/bbs/user/130704.xlsm
Gruss
Alex
Anzeige
AW: Excel Abfrage per VBA erstellen
04.07.2019 14:48:20
mmat
Hallo Alex,
mein Excel kann mit "Queries.add" scheinbar nix anfangen, vermutlich ist das Versionsabhängig oder ich muß noch einen Verweis aktivieren.
Was soll das Ding eigentlich können? einfach nur eine Liste von Dateinamen in einem Verzeichnis?
Da kenne ich einfachere Methoden.
vg, MM
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Excel Abfrage per VBA erstellen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Füge ein neues Modul hinzu:
    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsm)" > Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:
Sub Abfrage()
    Workbooks.Add
    ActiveWorkbook.Queries.Add Name:="Test", Formula:= _
    "let" & Chr(13) & "" & Chr(10) & "    Quelle = Folder.Files(""" & Range("D2").Value & """)" & Chr(13) _
    & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    Quelle"

    ActiveWorkbook.Worksheets.Add
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
    "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Test;Extended Properties=""""" _
    , Destination:=Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [Test]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "Test"
        .Refresh BackgroundQuery:=False
    End With
End Sub
  1. Ändere den Pfad in Range("D2").Value, sodass er auf die Zelle verweist, die den gewünschten Ordnerpfad enthält.
  2. Führe das Makro aus, indem du im VBA-Editor auf F5 drückst oder das Makro über Excel startest.

Häufige Fehler und Lösungen

  • Fehler beim Kompilieren: Erwartet: Anweisungsende
    Stelle sicher, dass du den Pfad korrekt angegeben hast. Überprüfe die Zeile, die Folder.Files verwendet, und achte auf fehlende oder falsche Anführungszeichen.

  • "Queries.add" kann nicht gefunden werden
    Dieser Fehler könnte darauf hindeuten, dass deine Excel-Version die Funktion nicht unterstützt. Stelle sicher, dass du eine aktuelle Version von Excel verwendest.


Alternative Methoden

Wenn du Schwierigkeiten mit der VBA-Abfrage hast, kannst du auch die Power Query-Funktion in Excel verwenden:

  1. Gehe zu Daten > Abfragen und Verbindungen.
  2. Wähle Daten abrufen > Aus Datei > Aus Ordner.
  3. Gib den Pfad zum gewünschten Ordner ein.
  4. Klicke auf Daten transformieren, um die Abfrage weiter anzupassen.

Diese Methode ist benutzerfreundlicher und benötigt kein VBA.


Praktische Beispiele

  • Abfrage von PDF-Dateien: Wenn du eine Liste von PDF-Dateien in einem spezifischen Ordner erstellen möchtest, setze den Pfad in Zelle D2 und führe das Makro aus. Du erhältst eine Tabelle mit den Dateinamen.

  • Erstellen einer Abfragedatei: Du kannst die Excel-Abfrage erstellen, um automatisch Informationen aus verschiedenen Ordnern zu extrahieren und in einer zentralen Datei zusammenzufassen.


Tipps für Profis

  • Verwende Variablen: Anstatt den Pfad direkt in den Code zu schreiben, nutze Variablen, um den Code flexibler zu gestalten.

  • Fehlerbehandlung einbauen: Implementiere On Error Resume Next und If Err.Number <> 0 Then für eine bessere Fehlerbehandlung in deinem Code.

  • Dokumentiere deinen Code: Füge Kommentare hinzu, um den Code für andere verständlicher zu machen.


FAQ: Häufige Fragen

1. Frage
Wie kann ich den Ordnerpfad dynamisch ändern?
Antwort: Du kannst den Pfad in eine Zelle eingeben und im VBA-Code darauf verweisen, z.B. Range("D2").Value.

2. Frage
Welche Excel-Version benötige ich für VBA-Abfragen?
Antwort: Die meisten aktuellen Versionen von Excel (ab 2010) unterstützen VBA-Abfragen. Stelle sicher, dass du die richtige Version verwendest, um alle Funktionen nutzen zu können.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige