Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1180to1184
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 in Spaltenform importieren

Mehrere .csv Dateien in Spaltenform importieren
Matthias
Hallo,
Ramses hatte im November 2006 das untenstehende Makro veröffentlicht, das mehrere .csv-Dateien gleichzeitig importiert (Link: https://www.herber.de/forum/archiv/820to824/t822222.htm)
In diesem Makro werden die Inhalte der csv-Dateien untereinander angehängt.
Wie muß ich das Makro abändern, damit die Inhalte nebeneinander importiert werden ?
(also Inhalt von Datei1 in Spalte 1-3, Inhalt von Datei2 in Spalte 4-6, Inhalt von Datei3 in Spalte 7-9 usw.)
Was muß geändert werden, damit zusätzlich in die erste Zeile immer der Name der importierten csv-Datei erscheint ?
(in A1 steht Dateiname1, in A4 der Dateiname2, in A7 der Dateiname3 usw.)
Vielen Dank, Matthias

Option Explicit
Sub Rename_Files()
'(C) Ramses
'Liest alle CSV-Dateien in einem Verzeichnis ein
Dim Datei As String, freeRow As Long
Dim Qe As Integer
Dim PFAD As String
PFAD = "c:\" 'ACHTUNG: Bachslash am Schluss
Datei = Dir(PFAD & "*.csv")
Qe = MsgBox("Zum Import muss die aktuelle Tabelle leer sein," & vbCrLf & _
"bzw. alle Daten der aktuellen Tabelle: "" " & ActiveSheet.Name & " "" werden gelöscht", _
vbYesNo + vbCritical, "CSV-Import starten ?")
If Qe = vbNo Then
MsgBox "CSV-Import abgebrochen"
Exit Sub
Else
Cells.Clear
End If
Do While Datei  ""
freeRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & PFAD & Datei, Destination:=Range("A"  _
_
_
& freeRow))
.Name = Datei
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Datei = Dir()
Loop
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Mehrere .csv Dateien in Spaltenform importieren
15.10.2010 19:16:06
Oberschlumpf
Hi Matthias
Versuch mal:
Option Explicit
Sub Rename_Files()
'(C) Ramses
'Liest alle CSV-Dateien in einem Verzeichnis ein
Dim Datei As String, freeCol As Long
Dim Qe As Integer
Dim PFAD As String
PFAD = "c:\" 'ACHTUNG: Bachslash am Schluss
Datei = Dir(PFAD & "*.csv")
Qe = MsgBox("Zum Import muss die aktuelle Tabelle leer sein," & vbCrLf & _
"bzw. alle Daten der aktuellen Tabelle: "" " & ActiveSheet.Name & " "" werden gelöscht", _
vbYesNo + vbCritical, "CSV-Import starten ?")
If Qe = vbNo Then
MsgBox "CSV-Import abgebrochen"
Exit Sub
Else
Cells.Clear
End If
Do While Datei  ""

If Cells(2, Columns.Count).End(xlToLeft).Column = 1 Then
freeCol = 1
Else
freeCol = Cells(2, Columns.Count).End(xlToLeft).Column + 1
End If
Cells(1, freeCol) = Datei

With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & PFAD & Datei, Destination:=Cells(2,  _
freeCol))
.Name = Datei
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Datei = Dir()
Loop
End Sub
Hab den Code jetzt nur deinen Wünschen angepasst. Hab den Code aber nicht getestet, weil ich ja deine CSV-Dateien nicht kenne.
Der Code arbeitet, wie folgt:
1) es wird die erste freie Spalte ermittelt (wenn Tabelle leer, dann freie Spalte = 1)
2) es wird immer in Zeile 1 in der gefundenen, freien Spalte der Wert aus "Datei" geschrieben - der Name der Datei
3) dann wird die gefundene Datei eingelesen und immer ab Zeile 2 abwärts geschrieben
4) jetzt beginnt bei 1) so lange alles von vorne, bis im ausgewählten Verzeichnis alle CSVs abgearbeitet sind
die fettdargestellten Stellen sind meine Code-Änderungen
Hilfts denn?
Ciao
Thorsten
Anzeige
AW: Mehrere .csv Dateien in Spaltenform importieren
17.10.2010 12:33:30
Matthias
Vielen Dank, Thorsten alias Oberschlumpf ! Funktioniert einwandfrei !
Dazu noch zwei Fragen:
Cells(2, Columns.Count) ist mir klar, aber was bewirken eigentlich die zwei 'Unterpunkte' dahinter, also .End(xlToLeft).Column ?
Und wieso xlToLeft ? Ich probierte es ständig mit 'xlToRight', weil ich doch die nächste _rechte_ Spalte ermitteln möchte ?
Viele Grüße, Matthias
AW: Mehrere .csv Dateien in Spaltenform importieren
17.10.2010 13:02:36
Oberschlumpf
Moin
Sorry, das weiß ich leider auch nicht. Ich hatte den Code zum Finden der zuletzt benutzten Spalte auch irgdwann im Herber-Archiv gefunden - eingesetzt - passte - alles gut :-)
...ich verstehe längst nicht alles, was ich mache...aber ich mache ne Menge :-))
Ciao
Thorsten
Anzeige
AW: Mehrere .csv Dateien in Spaltenform importieren
17.10.2010 13:53:19
Tino
Hallo,
Cells(2, Columns.Count).End(xlToLeft)
ist die Zelle in der zweiten Zeile (2) in der letzten Spalte (Columns.Count),
von dort aus nacht links (xlToLeft) bis zur ersten gefüllten in Zelle.
Gruß Tino

324 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige