Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1296to1300
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 Excel importieren

Mehrere CSV Dateien in Excel importieren
28.01.2013 14:52:11
chandler
Hallo Forum,
ich habe das nachfolgende Makro meinen Bedürfnissen zum Teil angepasst.
Da ich um die 5000 CSV Dateien habe, würde ich gerne die als einzelne XLS Dateien
speichern unter dem gleichen Namen wie die bereits eingelesene CSV.
Noch besser, wenn es möglich wäre, in einer Scheife das ganze Verzeichnis mit den CSV’s einlesen und als XLS Dateien abspeichern.
Kann mir jemand helfen?
Sub Makro1()
Dim sPfad As String
Dim oQuery As QueryTable
If Dir("D:\Test", vbDirectory)  "" Then
ChDrive "D:"
ChDir "D:\Test"
sPfad = Application.GetOpenFilename("CSV Files (*.csv), *.csv")
If sPfad  CStr(False) Then
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & sPfad, Destination:=Range("A1"))
.Name = "sPfad"
.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)
.TextFileDecimalSeparator = "."
.TextFileThousandsSeparator = " "
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
For Each oQuery In ActiveSheet.QueryTables
oQuery.Delete
Next oQuery
With Rows("1:1")
.Font.Bold = True
.HorizontalAlignment = xlCenter
End With
Cells.Columns.AutoFit
Range("A1").Select
End If
Else
MsgBox "Der Pfad 'D:\Test' wurde nicht gefunden!", vbCritical
End If
End Sub
Vielen dank im Voraus. chandler

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrere CSV Dateien in Excel importieren
28.01.2013 15:04:29
Daniel
HI
beispielsweise mit Hilfe der DIR-Funktion:
sPfad = dir("D:\Test\*.csv)
Do While sPfad  ""
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & "D:\Test\" & sPfad, Destination:=Range("A1"))
sPfad = Dir()
Loop

Gruß Daniel

AW: Mehrere CSV Dateien in Excel importieren
28.01.2013 15:23:19
chandler
Hallo Daniel,
vielen Dank. Hier mein Modifiziertes Makro.
Leider werden die einzelnen CSV Dateien in ein Tabellenblatt eingelese (importiert).
Ich hätte gerne das jede einzelne CSV in eine einzelne (separete) XLS importiert wird.
Sub Makro1()
Dim sPfad As String
sPfad = Dir("D:\Test\*.csv")
Do While sPfad  ""
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & "D:\Test\" & sPfad, Destination:=Range("A1"))
Name = "sPfad"
.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)
.TextFileDecimalSeparator = "."
.TextFileThousandsSeparator = " "
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
sPfad = Dir()
Loop
End Sub
Vielen Dank im Voraus. chandler

Anzeige
AW: Mehrere CSV Dateien in Excel importieren
28.01.2013 16:05:38
Daniel
Hi
nach dem Importieren einfach die Datei als CSV-Datei speichern
ActiveWorkbook.SaveAs Replace("D:\Test\" & sPfad, ".csv", ""), Fileformat:=xlnormal
die Zeile kommt dann vor das sPfad = Dir()
Gruß Daniel

AW: Mehrere CSV Dateien in Excel importieren
28.01.2013 16:28:34
chandler
Hallo Daniel,
ja, es funktioniert habe jetzt zwei Makros, die funktionieren.
Vielen, vielen Dank. chandler

AW: Mehrere CSV Dateien in Excel importieren
28.01.2013 15:19:40
Rudi
Hallo,
teste mal:
Sub aaaaa()
Dim sFile As String, sPath As String, iFree As Integer
Dim arrCSV, arrTmp, arrXLS(), i As Integer, j As Integer, n As Long
sPath = "c:\temp\"
sFile = Dir(sPath & "*.csv")
Application.ScreenUpdating = False
Do While Len(sFile)
iFree = FreeFile
Open sPath & sFile For Input As iFree
arrCSV = Split(Input(LOF(iFree), iFree), vbCrLf)
Close iFree
For i = 0 To UBound(arrCSV)
arrTmp = Split(arrCSV(i), ";")
n = Application.Max(n, UBound(arrTmp))
Next
ReDim arrXLS(1 To UBound(arrCSV) + 1, 1 To n + 1)
For i = 0 To UBound(arrCSV)
arrTmp = Split(arrCSV(i), ";")
For j = 0 To UBound(arrTmp)
arrXLS(i + 1, j + 1) = arrTmp(j)
Next
Next
With Workbooks.Add
.Sheets(1).Cells(1, 1).Resize(UBound(arrXLS), UBound(arrXLS, 2)) = arrXLS
.SaveAs sPath & Mid(sFile, 1, Len(sFile) - 4), 51
.Close
End With
sFile = Dir
Loop
End Sub

Gruß
Rudi

Anzeige
AW: Mehrere CSV Dateien in Excel importieren
28.01.2013 15:30:08
chandler
Hallo Rudi,
vielen Dank.
Bekomme bei: For i = 0 To UBound(arrCSV) Laufzeitfehler '6' Überlauf.
Die CSV Dateien haben über 50000 Zeilen.
Grüße. chandler

Dim i as Long owT
28.01.2013 15:32:15
Rudi

Korrektur
28.01.2013 15:31:31
Rudi
Hallo,
Version nicht beachtet.
.SaveAs sPath & Mid(sFile, 1, Len(sFile) - 4), xlWorkbookNormal
Gruß
Rudi

AW: Korrektur
28.01.2013 15:43:43
chandler
Hallo Rudi,
ich habe bereits in Excel 2003 aber auch Excel 2010 getestet. Nach wie vor die gleiche Fehlermeldung.
Hie der Code:
Sub aaaaa()
Dim sFile As String, sPath As String, iFree As Integer
Dim arrCSV, arrTmp, arrXLS(), i As Integer, j As Integer, n As Long
sPath = "D:\Test\"
sFile = Dir(sPath & "*.csv")
Application.ScreenUpdating = False
Do While Len(sFile)
iFree = FreeFile
Open sPath & sFile For Input As iFree
arrCSV = Split(Input(LOF(iFree), iFree), vbCrLf)
Close iFree
For i = 0 To UBound(arrCSV)
arrTmp = Split(arrCSV(i), ";")
n = Application.Max(n, UBound(arrTmp))
Next
ReDim arrXLS(1 To UBound(arrCSV) + 1, 1 To n + 1)
For i = 0 To UBound(arrCSV)
arrTmp = Split(arrCSV(i), ";")
For j = 0 To UBound(arrTmp)
arrXLS(i + 1, j + 1) = arrTmp(j)
Next
Next
With Workbooks.Add
.Sheets(1).Cells(1, 1).Resize(UBound(arrXLS), UBound(arrXLS, 2)) = arrXLS
'      .SaveAs sPath & Mid(sFile, 1, Len(sFile) - 4), 51
.SaveAs sPath & Mid(sFile, 1, Len(sFile) - 4), xlWorkbookNormal
.Close
End With
sFile = Dir
Loop
End Sub
Grüße chandler

Anzeige
dim i as long eingebaut? owT
28.01.2013 15:49:54
Rudi

AW: dim i as long eingebaut? owT
28.01.2013 16:10:13
chandler
Hallo Rudi,
es funktioniert, nur noch eins: Die Extensions.xls wird nicht angehängt, so das man manuell ergänzen muss. Wir könnte ich das noch realisieren?
Vielen Dank. chandler

AW: dim i as long eingebaut? owT
28.01.2013 16:14:44
Rudi
Hallo,
so schwer ist das doch nicht.
.SaveAs sPath & Mid(sFile, 1, Len(sFile) - 4) & ".xls", xlWorkbookNormal
Gruß
Rudi

AW: Funktioniert einwandfrei
28.01.2013 16:24:09
chandler
Hallo Rudi,
Alles Bestens. Funktioniert einwandfrei.
Vielen, vielen Dank. Grüße chandler

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige