Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Query Table per VBA

Forumthread: Query Table per VBA

Query Table per VBA
04.06.2019 09:45:57
Georg
Liebe Mitglieder,
ich importieren csv Daten in eine leere Excel Datei (per VBA, den Code war im Netz zu finden und funktioniert).
Im Anschluss möchte ich daraus eine "echte" Tabelle machen,
(ich weiß mit STRG+t geht es ganz problemlos, aber ich bearbeitete die Datei nicht selbst, sondern stelle sie Nutzer zur Verfügung.)
Ich hab den Recorder mitlaufen lassen, aber wie kann ich das ganze dynamsich gestalten? Die csv Daten haben ja nicht immer den selben Umfang (wie im Code mit Range siehe unten - definiert)?
Vielen Dank G
Sub tabell()
' tabell Makro
Range("B7").Select
ActiveSheet.QueryTables("hier Name der Datei reinschreiben lassen").Delete
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$T$2847"), , xlYes).Name = _
"Tabelle1"
Range("Tabelle1[#All]").Select
End Sub

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Query Table per VBA
04.06.2019 10:31:03
Stef
Hi Georg,
du könntest die letzte beschriebene Zeile ermitteln. Hilft dir folgender Code weiter?
Sub tabell()
' tabell Makro
Dim i As Long
i = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
Range("B7").Select
ActiveSheet.QueryTables("hier Name der Datei reinschreiben lassen").Delete
ActiveSheet.ListObjects.Add(xlSrcRange, Range("A1", "T" & i), , xlYes).Name = _
"Tabelle1"
Range("Tabelle1[#All]").Select
End Sub

Anzeige
AW: Query Table per VBA
04.06.2019 10:43:58
Werner
Hallo,
was soll das denn für eine Range sein?
Range("A1", "T" & i)

Wenn, dann so:
Range("A1:T" & i)
Gruß Werner
AW: Query Table per VBA
04.06.2019 11:03:48
Stef
bei mir klappt das mit
Range("A1", "T" & i)
stimmt, sorry. o.w.T.
04.06.2019 12:09:56
Werner
Anzeige
AW: Query Table per VBA
04.06.2019 10:42:35
Werner
Hallo Geord,
so, letzte Zeile und letzte Spalte wird im Code ermittelt und ist somit flexibel.
Public Sub aaa()
Dim loSpalte As Long, loZeile As Long
With Worksheets("Tabelle1") 'Blattname anpassen
loSpalte = .Cells(1, .Columns.Count).End(xlToLeft).Column
loZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
.ListObjects.Add(xlSrcRange, .Range(.Cells(1, 1), .Cells(loZeile, loSpalte)), , xlYes) _
.Name = "Tabelle1"
End With
End Sub
Gruß Werner
Anzeige
AW: Query Table ...vielen Dank Werner..
04.06.2019 11:00:38
Georg
..alles prima wie immer, die Range Geschichte ist mir auch aufgefallen. Gruß G
Gerne u. Danke für die Rückmeldung. o.w.T.
04.06.2019 12:10:43
Werner
;
Anzeige

Infobox / Tutorial

Query Table in Excel mit VBA effizient nutzen


Schritt-für-Schritt-Anleitung

Um eine CSV-Datei in Excel per VBA als Query Table zu importieren und dynamisch zu gestalten, befolge diese Schritte:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke auf „Einfügen“ > „Modul“.
  3. Füge den folgenden Code ein:

    Sub ImportCSVToQueryTable()
       Dim loSpalte As Long, loZeile As Long
       With Worksheets("Tabelle1") ' Blattname anpassen
           loSpalte = .Cells(1, .Columns.Count).End(xlToLeft).Column
           loZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
           .QueryTables.Add(Connection:="TEXT;C:\Pfad\zu\deiner\datei.csv", Destination:=.Range("A1")).Refresh
           .ListObjects.Add(xlSrcRange, .Range(.Cells(1, 1), .Cells(loZeile, loSpalte)), , xlYes).Name = "Tabelle1"
       End With
    End Sub
    • Ersetze C:\Pfad\zu\deiner\datei.csv mit dem tatsächlichen Pfad der CSV-Datei.
  4. Starte das Makro:

    • Drücke F5 oder wähle das Makro aus und klicke auf „Ausführen“.

Häufige Fehler und Lösungen

  • Fehler: „Die Datei konnte nicht gefunden werden“
    Stelle sicher, dass der Pfad zur CSV-Datei korrekt ist.

  • Fehler: „Der Bereich ist ungültig“
    Überprüfe, ob der Blattname in deinem Code richtig geschrieben ist.

  • Fehler: „Das Makro kann nicht ausgeführt werden“
    Stelle sicher, dass Makros in den Excel-Optionen aktiviert sind.


Alternative Methoden

Eine alternative Methode zum Importieren von CSV-Daten ist die Verwendung des QueryTables.Add-Befehls:

Sub AddQueryTable()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Tabelle1") ' Blattname anpassen

    ws.QueryTables.Add(Connection:="TEXT;C:\Pfad\zu\deiner\datei.csv", Destination:=ws.Range("A1")).TextFileConsecutiveDelimiter = False
    ws.QueryTables(1).Refresh
End Sub

Diese Methode ist besonders nützlich, wenn Du viele CSV-Dateien importieren möchtest.


Praktische Beispiele

Hier sind einige Beispiele, wie Du querytables.add csv und vba query tables effektiv einsetzen kannst:

Sub MultipleCSVImports()
    Dim filePath As String
    Dim i As Integer
    For i = 1 To 3
        filePath = "C:\Pfad\zu\deiner\datei" & i & ".csv"
        With ThisWorkbook.Sheets("Tabelle" & i)
            .QueryTables.Add(Connection:="TEXT;" & filePath, Destination:=.Range("A1")).Refresh
        End With
    Next i
End Sub

Hier importierst Du mehrere CSV-Dateien in verschiedene Tabellenblätter.


Tipps für Profis

  • Nutze Application.ScreenUpdating = False zu Beginn Deines Makros, um die Ausführungsgeschwindigkeit zu erhöhen.

  • Verwende Option Explicit am Anfang Deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind.

  • Dokumentiere Deinen Code mit Kommentaren, um die Wartbarkeit zu erhöhen.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen ListObjects.Add und QueryTables.Add?
ListObjects.Add erstellt eine Excel-Tabelle aus einem Bereich, während QueryTables.Add Daten aus externen Quellen importiert.

2. Kann ich auch andere Dateiformate importieren?
Ja, QueryTables.Add unterstützt verschiedene Formate wie Excel- und Textdateien.

3. Wie kann ich die Daten nach dem Import filtern?
Du kannst die Filteroptionen direkt in der Excel-Tabelle verwenden oder zusätzliche VBA-Codes schreiben, um die Daten zu filtern.

4. Funktioniert dieser Code auch in Excel 365?
Ja, der Code ist mit Excel 2010 und späteren Versionen kompatibel, einschließlich Excel 365.

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