Bin grad ein wenig am VBA lernen und bin auf einen Beitrag gestoßen wie man CSV Dateien gut Importieren kann.
Sub Datei_Importieren()
Dim strFileName As String, arrDaten, arrTmp, lngR As Long, lngLast As Long
Const cstrDelim As String = ";" 'Trennzeichen
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "Datei wählen"
.InitialFileName = "c:\test\*.csv" 'Pfad anpassen
If .Show = -1 Then
strFileName = .SelectedItems(1)
End If
End With
If strFileName "" Then
Application.ScreenUpdating = False
Open strFileName For Input As #1
arrDaten = Split(Input(LOF(1), 1), vbCrLf)
Close #1
For lngR = 1 To UBound(arrDaten)
arrTmp = Split(arrDaten(lngR), cstrDelim)
If UBound(arrTmp) > -1 Then
With ActiveSheet
lngLast = .Cells(Rows.Count, 1).End(xlUp).Row + 1
lngLast = Application.Max(lngLast, 10)
.Cells(lngLast, 1).Resize(, UBound(arrTmp) + 1) _
= Application.Transpose(Application.Transpose(arrTmp))
End With
End If
Next lngR
End If
End Sub
Link zum Orginalbeitrag:
https://www.herber.de/forum/archiv/1236to1240/1239032_CSVImport_ueber_VBA.html
Meine Frage ist jetzt: Warum wird beim schreiben in die Zellen zwei mal Transponiert (Fett markierte Zeile)?
Man könnte doch auch einfach das Array "arrTmp" in den markierten Bereich schreiben oder nicht?
Was für Nebeneffekte bringt die Transponieren-Funktion noch mit, die hier evtl. ausgenutzt werden?
Gruß Ludwig