Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1020to1024
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
CSV Dateien importieren
29.10.2008 15:07:00
Bernhard
Hallo liebe Experten,
ich google seit geraumer Zeit nach einer Lösung für folgende Aufgabenstellung, bin aber nicht recht weiter gekommen:
Aufgabe:
Ich erhalte einen Ordner mit bis zu 50 CSV-Files, die ich in eine Excelmappe importieren soll. Für jedes CSV-File soll ein Tabellenblatt angelegt werden und mit dem Namen des CSV-Files bezeichnet werden. Jetzt könnte ich das alles zu Fuss machen, aber die Aufgabe wird öfter auf mich zu kommen und die Daten aus den CSV-Files sollen ja auch noch weiter bearbeitet werden. Also wäre ein Makro doch besser.
Wer kann mir bitte weiterhelfen?
Grüsse
Bernhard

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV Dateien importieren
29.10.2008 15:14:51
Rudi
Hallo,
ungetestet, sollte aber klappen:

Option Explicit
Public intCalculation As Integer
Sub CSV2XLS()
'Alle .csv (Trennzeichen ;) eines Ordners in .xls umwandeln
Dim oFS As Object, oFolder As Object, oFile As Object
Dim strFolder As String
Dim strTxt As String, myArr, lngL As Long, WKS As Worksheet, iFREE As Integer
With Application.FileDialog(4)
.InitialFileName = "n:\"
.InitialView = 2
.Title = "Bitte einen Ordner wählen"
If .Show = -1 Then
strFolder = .SelectedItems(1)
Else
Exit Sub
End If
End With
On Error GoTo FEHLER
DoEvents
GetMoreSpeed
Set oFS = CreateObject("scripting.filesystemobject")
Set oFolder = oFS.getfolder(strFolder)
iFREE = FreeFile
For Each oFile In oFolder.Files
If oFile.Name Like "*.csv" Then
Set WKS = Worksheets.Add
WKS.Name = oFile.Name
lngL = 1
Open oFile For Input As iFREE
Do Until EOF(iFREE)
Line Input #iFREE, strTxt
myArr = Split(strTxt, ";")
With WKS
.Range(.Cells(lngL, 1), .Cells(lngL, UBound(myArr) + 1)) = myArr
End With
lngL = lngL + 1
Loop
Close #iFREE
End If
Next oFile
AUFRAEUMEN:
Set oFile = Nothing
Set oFolder = Nothing
Set oFS = Nothing
GetMoreSpeed False
Exit Sub
FEHLER:
If Err.Number Then
MsgBox "Fehler!" & vbLf & Err.Description
Err.Clear
Resume AUFRAEUMEN
End If
End Sub
Sub GetMoreSpeed(Optional ByVal Modus As Boolean = True)
If Modus = True Then intCalculation = Application.Calculation
With Application
.ScreenUpdating = Not Modus
.EnableEvents = Not Modus
.Calculation = IIf(Modus = True, xlManual, intCalculation)
.Cursor = IIf(Modus = True, 2, -4143)
End With
End Sub


Gruß
Rudi

Anzeige
AW: CSV Dateien importieren
29.10.2008 15:41:00
Bernhard
Hallo Rudi,
zunächst herzlichen Dank für Deine schnelle Hilfe. Der Code funktioniert. Ich habe für jedes File ein extra Tabellenblatt bekommen. Nun muss ich jedoch die importierten Daten in Spalten bekommen. Wo füge ich da den Code ein? (mein VBA bescheiden) Und ist es möglich bei der Benennung der Blätter den Zusatz CSV weg zu lassen?
Wäre dankbar, wenn Du mir nochmals hilfst.
Gruss
Bernhard
AW: CSV Dateien importieren
29.10.2008 15:50:00
Rudi
Hallo,

die importierten Daten in Spalten bekommen


das sollte der Fall sein, wenn die Daten mit ; getrennt sind. Ansonsten hier
myArr = Split(strTxt, ";")
das Trennzeichen anpassen.
2. Tausche aus:
WKS.Name = oFile.Name
gegen
WKS.Name = Replace(oFile.Name,".csv","")
Gruß
Rudi

Anzeige
AW: CSV Dateien importieren
29.10.2008 16:11:00
Bernhard
Hallo Rudi,
danke nochmals, das hat weitergeholfen. Die Tabellenblatt- Namen stimmen jetzt und der Inhalt ist jetzt in Spalten aufgeteilt, Datum in Spalte A und Zahlen (Spalten B bis F) sind jedoch als Text formatiert. Wie ist der Code anzupassen?
Willst Du nochmals bitte einen Blick drauf werfen?
Gruss
Bernhard
AW: CSV Dateien importieren
29.10.2008 16:53:00
Rudi
Hallo,
ein Schuss ins blaue:

Sub CSV2XLS()
'Alle .csv (Trennzeichen ;) eines Ordners in .xls umwandeln
Dim oFS As Object, oFolder As Object, oFile As Object
Dim strFolder As String, c As Range
Dim strTxt As String, myArr, lngL As Long, WKS As Worksheet, iFREE As Integer
With Application.FileDialog(4)
.InitialFileName = "n:\"
.InitialView = 2
.Title = "Bitte einen Ordner wählen"
If .Show = -1 Then
strFolder = .SelectedItems(1)
Else
Exit Sub
End If
End With
On Error GoTo FEHLER
DoEvents
GetMoreSpeed
Set oFS = CreateObject("scripting.filesystemobject")
Set oFolder = oFS.getfolder(strFolder)
iFREE = FreeFile
For Each oFile In oFolder.Files
If oFile.Name Like "*.csv" Then
Set WKS = Worksheets.Add
WKS.Name = Replace(oFile.Name, ".csv", "")
lngL = 1
Open oFile For Input As iFREE
Do Until EOF(iFREE)
Line Input #iFREE, strTxt
myArr = Split(strTxt, ";") 'Trennzeichen anpassen
With WKS
.Range(.Cells(lngL, 1), .Cells(lngL, UBound(myArr) + 1)) = myArr
End With
lngL = lngL + 1
Loop
Close #iFREE
With WKS
For Each c In .UsedRange.Columns
c.TextToColumns Destination:=c.Cells(1), DataType:=xlDelimited, fieldinfo:=Array(1,  _
1)
Next c
End With
End If
Next oFile
AUFRAEUMEN:
Set oFile = Nothing
Set oFolder = Nothing
Set oFS = Nothing
GetMoreSpeed False
Exit Sub
FEHLER:
If Err.Number Then
MsgBox "Fehler!" & vbLf & Err.Description
Err.Clear
Resume AUFRAEUMEN
End If
End Sub


Gruß
Rudi

Anzeige
AW: CSV Dateien importieren
29.10.2008 17:05:00
Bernhard
Hi Rudi,
jetzt passt es. Super!!!
Herzlichen Dank.
Grüsse
Bernhard

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige