Hallo Peter,
anliegend mal ein etwas kompakterer Code zum Einlesen der CSV-Daten.
Im Kopf kannst Du das Zielblatt festlegen oder auch das gerade aktive Blatt nutzen.
Zum Verschieben der Zellen kann ich nichts sagen. Bei mir verschiebt sich nichts.Leerzellen sind ja auch durch ";" getrennt. Lediglich kürzere Zeilen würden die jeweils letzten Spalten ggf. nicht füllen. Das ist aber egal, da sie ohnehin leer wären. Wenn da schon was stand, bleibt das dann stehen. Aber man ja vorher alles löschen.
Private Sub CommandButtonImport_Click()
Dim fd As Office.FileDialog
Dim WSh As Worksheet
' Set WSh = ActiveWorkbook.Sheets("Schichten") 'ggf. anpassen
Set WSh = ActiveSheet 'Oder das gerade aktive Blatt nehmen
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.Filters.Clear
.Title = "Select a CSV File"
.Filters.Add "CSV", "*.csv", 1
.AllowMultiSelect = False
Dim sFile As String
If .Show = True Then
sFile = .SelectedItems(1)
End If
End With
' Import CSV from FileDialog
If sFile <> "" Then
Open sFile For Input As #1
row_number = 1
Do Until EOF(1)
Line Input #1, LineFormFile
LineItems = Split(LineFormFile, ";")
WSh.Cells(row_number, 1).Resize(1, UBound(LineItems) + 1) = LineItems
row_number = row_number + 1
Loop
Close #1
End If
End Sub
viele Grüße
Karl-Heinz
|