Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1724to1728
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Mehrere CSV-Dateien automatisch einlesen

Mehrere CSV-Dateien automatisch einlesen
18.11.2019 14:41:47
Gerri
Hallo,
ich habe eigentlich kaum / bis gar nichts mit Excel zu tun, muss jetzt aber doch mal etwas damit erledigen.
Ich kriege per Mail mehrere CSV-Dateien (derzeitig 6) und muss diese in eine Excel einfügen und auswerten. Ich habe auch schon mal angefangen mir eine Vorlage zu erstellen. Einlesen über Excel mit "Daten abrufen aus Ordner" funktioniert auch - Excel macht dann ja direkt eine Tabelle aus dem ganzen, was ich auch brauche. Ich lasse diese dann auf einem zweiten Tabellenblatt Einfügen, mache darauf meine Auswertung/Duplikatentfernung und lasse mir das ganze dann "in schön" (einfach Verweis auf die Werte in Tabellenblatt 2) auf Tabelleblatt 1 anzeigen.
Das ganze wollte ich mir ein wenig automatisieren, Auswertung und Duplikatentfernung habe ich sogar mit dem Makrorekorder und ein wenig händischer Anpassung hinbekommen. Aber das einlesen der CSV-Dateien kriege ich einfach nicht hin... der Rekorder versagt da auch.
Ein wenig kompakter:
- Mehrere CSV aus Ordner einlesen (Simikolon getrennt), sind 3 Werte pro Zeile
- Auf Tabellenblatt 2 "Tabelle2", als auswertbare Tabelle in A2 und folgend einfügen
Ich hoffe mir kann da irgendjemand helfen... ich habe auch schon versucht im Internet was zu finden, aber dieses VBA versteh ich einfach nicht...

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrere CSV-Dateien automatisch einlesen
18.11.2019 15:42:27
Günther
Moin,
prinzipiell kannst du so gut wie alles automatisiert im Power Query-Editor erledigen lassen. Ganz ohne VBA…
Allerdings musst du dich ein wenig (mehr) mit dem Power Query-Editor und der Umgebung auseinandersetzen.
Gruß
Günther
AW: Mehrere CSV-Dateien automatisch einlesen
22.11.2019 15:02:31
Gerri
Hallo Günther,
wie es scheint ist der "Power Query-Editor" seit 2013+ das "Daten abrufen". Damit habe ich bisher ja auch meine Abfrage gemacht und dann mit dem Makroeditor alles aufgenommen - eine andere Möglichkeit habe ich dafür auch erst mal nicht gefunden.
An sich hab ich es jetzt sogar zum laufen gekriegt, nur ist der Code halt absolut schrecklich, da der Code intern mit festen Dateinamen (für die Excel-Datei) und internen Tabellennamen arbeitet. Dadurch ist das ganze ziemlich fehleranfällig - Datei darf nie umbenannt werden, wenn man speichert werden durch die Duplikat entfernung auch Zellen gelöscht und ein erneutes Laden funktioniert nicht ohne weiteres und unter "Abfragen und Verbindungen" sind wie erwähnt bereits die internen Tabellennamen in verwendung, ein erneutes nutzen des Skriptes zum laden ist dadurch nicht möglich (crash aufgrund der gleichen Namen).
Vielleicht kann mir ja jemand helfen den Anfang des Skriptes ein wenig "schöner" zu machen, ich hab nur Kleinigkeiten angepasst gekriegt, da mir das ansonsten zu hoch ist.

Sub DatenLadenV5()
' DatenLadenV5 Makro
Range("A1").Select
ActiveWorkbook.Queries.Add Name:="Beispieldatei aus  csv  transformieren", _
Formula:= _
"let" & Chr(13) & "" & Chr(10) & "    Quelle = Csv.Document(Beispieldateiparameter1,[ _
Delimiter="";"", Columns=3, Encoding=1252, QuoteStyle=QuoteStyle.None])" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    Quelle"
ActiveWorkbook.Queries.Add Name:="Beispieldateiparameter1", Formula:= _
"Beispieldatei meta [IsParameterQuery=true, BinaryIdentifier=Beispieldatei, Type="" _
Binary"", IsParameterQueryRequired=true]"
ActiveWorkbook.Queries.Add Name:="Beispieldatei", Formula:= _
"let" & Chr(13) & "" & Chr(10) & "    Quelle = Folder.Files(""C:\Users\[hier mein Pfad]" _
")," & Chr(13) & "" & Chr(10) & "    Navigation1 = Quelle{0}[Content]" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    Navigation1"
ActiveWorkbook.Queries.Add Name:="Datei aus  csv  transformieren", Formula _
:= _
"let" & Chr(13) & "" & Chr(10) & "    Quelle = (Beispieldateiparameter1) => let" & Chr( _
13) & "" & Chr(10) & "        Quelle = Csv.Document(Beispieldateiparameter1,[Delimiter="";"", Columns=3, Encoding=1252, QuoteStyle=QuoteStyle.None])" & Chr(13) & "" & Chr(10) & "    in" & Chr(13) & "" & Chr(10) & "        Quelle" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    Quelle"
ActiveWorkbook.Queries.Add Name:="csv", Formula:= _
"let" & Chr(13) & "" & Chr(10) & "    Quelle = Folder.Files(""C:\Users\[hier mein Pfad]" _
")," & Chr(13) & "" & Chr(10) & "    #""Gefilterte ausgeblendete Dateien1"" = Table.SelectRows(Quelle, each [Attributes]?[Hidden]?  true)," & Chr(13) & "" & Chr(10) & "    #""Benutzerdefinierte Funktion aufrufen1"" = Table.AddColumn(#""Gefilterte ausgeblendete Dateien1"", ""Datei aus  csv  transformieren"", each #""Datei aus  csv  transformieren""([Con" & _
"tent]))," & Chr(13) & "" & Chr(10) & "    #""Umbenannte Spalten1"" = Table. _
RenameColumns(#""Benutzerdefinierte Funktion aufrufen1"", {""Name"", ""Source.Name""})," & Chr(13) & "" & Chr(10) & "    #""Andere entfernte Spalten1"" = Table.SelectColumns(#""Umbenannte Spalten1"", {""Source.Name"", ""Datei aus  csv  transformieren""})," & Chr(13) & "" & Chr(10) & "    #""Erweiterte Tabellenspalte1"" = Table.ExpandTableColumn(#""Andere entfernte Spalten1""" & _
", ""Datei aus  csv  transformieren"", Table.ColumnNames(#""Datei aus  csv   _
transformieren""(Beispieldatei)))," & Chr(13) & "" & Chr(10) & "    #""Geänderter Typ"" = Table.TransformColumnTypes(#""Erweiterte Tabellenspalte1"",{{""Source.Name"", type text}, {""Column1"", type text}, {""Column2"", Int64.Type}, {""Column3"", Int64.Type}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Geänderter Typ"""
Workbooks("Vorlage7.xlsm").Connections.Add2 _
"Abfrage - Beispieldatei aus  csv  transformieren", _
"Verbindung mit der Abfrage 'Beispieldatei aus  csv  transformieren' in der  _
Arbeitsmappe." _
, Array( _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location="" _
Beispieldatei aus  csv  transformieren"";Extended Properties=""" _
, """"), "SELECT * FROM [Beispieldatei aus  csv  transformieren]", 2
Workbooks("Vorlage7.xlsm").Connections.Add2 "Abfrage - Beispieldateiparameter1" _
, "Verbindung mit der Abfrage 'Beispieldateiparameter1' in der Arbeitsmappe.", _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location= _
Beispieldateiparameter1;Extended Properties=""""" _
, "SELECT * FROM [Beispieldateiparameter1]", 2
Workbooks("Vorlage7.xlsm").Connections.Add2 "Abfrage - Beispieldatei", _
"Verbindung mit der Abfrage 'Beispieldatei' in der Arbeitsmappe.", _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Beispieldatei; _
Extended Properties=""""" _
, "SELECT * FROM [Beispieldatei]", 2
Workbooks("Vorlage7.xlsm").Connections.Add2 _
"Abfrage - Datei aus  csv  transformieren", _
"Verbindung mit der Abfrage 'Datei aus  csv  transformieren' in der Arbeitsmappe." _
, _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""Datei aus   _
csv  transformieren"";Extended Properties=""""" _
, "SELECT * FROM [Datei aus  csv  transformieren]", 2
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=csv;Extended  _
Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [csv]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "csv"
.Refresh BackgroundQuery:=False
End With
ActiveWorkbook.Worksheets("Tabelle2").ListObjects("csv").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Tabelle2").ListObjects("csv").Sort.SortFields.Add2 _
Key:=Range("csv[[#All],[Column1]]"), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Tabelle2").ListObjects("csv").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Anzeige

317 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige