Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1356to1360
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
Mehrere CSV-Dateien in ein Excel spielen
08.04.2014 12:40:16
TomTurbo
Hallo!
Ich hab folgendes Problem: Ich möchte viele csv-Dateien in ein großes Excel 1 zu 1 einspielen.
Dabei muss jede einzuspielende CSV Datei in eine neues Register im großen Excel eingebunden werden.
Ich habs soweit geschafft, dass ich gleich einen ganzen ordner mit csv dateien einlese, jedoch es nicht schaffe, die reiter mit den passenden namen zu versehen (aus dem csv namen will ich mir einen teil rausparsen)... kann mir da jemand weiterhelfen?
danke lg
Private Sub ImportiereCSVDateien()
Dim wbTarget As Workbook, wbSource As Workbook, ws As Worksheet
Dim fso, i, f, fd
Set fso = CreateObject("Scripting.Filesystemobject")
Set wbTarget = ActiveWorkbook
Dim BrowseDir As Object
On Error GoTo Err
Set BrowseDir = CreateObject("Shell.Application").BrowseForFolder(0, "Ordner auswählen", & _
H4000, 17)
Application.DisplayAlerts = False
For Each f In fso.GetFolder(BrowseDir.self.Path).Files
If LCase(Right(f.Name, 3)) = "csv" Then
Workbooks.OpenText Filename:=f.Path
Set wbSource = ActiveWorkbook
On Error Resume Next
Set ws = wbTarget.Worksheets(f.Name)
If Err  0 Then
Set ws = wbTarget.Worksheets.Add
ws.Name = f.Name
ws.Range("A:ZZ").Clear
End If
wbSource.Worksheets(1).Range("A:A").TextToColumns Destination:=Range("A1"),  _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Semicolon:=True, TrailingMinusNumbers:=True
wbSource.Worksheets(1).Range("A:ZZ").Copy Destination:=ws.Range("A1")
wbSource.Close False
End If
Next
Application.DisplayAlerts = True
Set fso = Nothing
Err:
Call MsgBox("ENDE", vbExclamation, "Programm Beendet")
End Sub

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrere CSV-Dateien in ein Excel spielen
09.04.2014 01:11:42
fcs
Hallo Tom,
hier dein Makro um entsprechende Funktionalität ergänzt.
Ich hab auch die bisher sehr unkontrolierte Fehlerbehandlung durch entsprechende Prüfungen etwas verfeinert.
Gruß
Franz
Private Sub ImportiereCSVDateien()
Dim wbTarget As Workbook, wbSource As Workbook, ws As Worksheet
Dim fso, i, f, fd
Set fso = CreateObject("Scripting.Filesystemobject")
Set wbTarget = ActiveWorkbook
Dim BrowseDir As Object
Dim strNameSheet As String
On Error GoTo ErrorBehandlung
Set BrowseDir = CreateObject("Shell.Application").BrowseForFolder(0, "Ordner auswählen", _
&H4000, 17)
If BrowseDir Is Nothing Then GoTo ErrorBehandlung
Application.DisplayAlerts = False
Application.ScreenUpdating = False
For Each f In fso.GetFolder(BrowseDir.self.Path).Files
If LCase(Right(f.Name, 3)) = "csv" Then
Workbooks.OpenText Filename:=f.Path
Set wbSource = ActiveWorkbook
'           On Error Resume Next
'Blattnamenn zusammenbasteln
strNameSheet = f.Name
strNameSheet = Left(strNameSheet, Len(strNameSheet) - 4) '.csv abschneiden
'hier Code für weitere Anpassungen für den Blattnamen in der Zieldatei einfügen
NeuesBlatt:
If fncCheckSheetName(strSheetName:=strNameSheet, wkb:=wbTarget) = False Then
'Blatt mit Name nicht vorhanden
Set ws = wbTarget.Worksheets.Add(After:=wbTarget.Sheets(wbTarget.Sheets.Count))
ws.Name = strNameSheet
ws.Range("A:ZZ").Clear
KopierenDaten:
wbSource.Worksheets(1).Range("A:A").TextToColumns Destination:=Range("A1"), _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Semicolon:=True, TrailingMinusNumbers:=True
wbSource.Worksheets(1).Range("A:ZZ").Copy Destination:=ws.Range("A1")
Else
'Blatt mit Name ist schon  vorhanden - Aktionen ggf. anpassen
If MsgBox("Blatt """ & strNameSheet & """ ist in Zieldatei schon vorhanden!" _
& vbLf & "Daten überschreiben?", _
vbYesNo + vbQuestion + vbDefaultButton2, "CSV-Dateien einlesen") = vbYes Then
Set ws = wbTarget.Sheets(strNameSheet)
ws.Cells.Clear
GoTo KopierenDaten
Else
strNameSheet = InputBox("Anderen Blattnamen vorgeben?", _
Title:="CVS-Dateien einlsen - Blattname", Default:=strNameSheet)
If strNameSheet  "" Then
GoTo NeuesBlatt
Else
'do nothing - Daten der Datei werden nicht eingelesen
End If
End If
End If
wbSource.Close False
End If
Next
Application.ScreenUpdating = True
Call MsgBox("ENDE", vbExclamation, "Programm Beendet")
ErrorBehandlung:
If Err.Number  0 Then
MsgBox "Fehler-Nr.: " & Err.Number & vbLf & Err.Description, _
vbOKOnly, "Fehler in ImportiereCSVDateien"
End If
Set fso = Nothing: Set wbTarget = Nothing: Set wbSource = Nothing: Set ws = Nothing
Set BrowseDir = Nothing
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Function fncCheckSheetName(ByVal strSheetName As String, Optional wkb As Workbook) As Boolean
'Prüfen, ob Blattname in Arbeitsmappe schon vorhanden
Dim objSheet As Object
If wkb Is Nothing Then Set wkb = ActiveWorkbook
On Error GoTo Beenden
Set objSheet = wkb.Sheets(strSheetName)
fncCheckSheetName = True
Beenden:
End Function

Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige