Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1660to1664
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

CSV-Datei import, importiert nur 2 Files, wieso?

CSV-Datei import, importiert nur 2 Files, wieso?
03.12.2018 11:06:39
Tina232
Hallo zusammen,
ich hab mir aus VBA diverse Codes zusammengebastelt um mehrere CSV-Dateien im UTF-8 zu importieren und in eine bestehende Tabelle zu importieren, die ab A5 beginnt.
Diese dient als "Datenbank" für meien Pivottabelle...
Nach dem Import werden ein Umlaute wie  und ä gesucht und ersetzt, warum die dargestellt werden hat wohl irgendwas mit dem Import zu tun, ist aber nicht weiter dramatisch...
Jedenfalls funktioniert das soweit alles, jedoch werden immer nur maximal 2 CSV Dateien importiert obwohl ich mehrere (ca. 30) Elemente auswähle...
Hat das was mit dem Code zu tun?
Danke und LG Tina
[code]

Sub CSV_import()
Dim strFileName As String, arrDaten, arrTmp, lngR As Long, lngLast As Long
Const cstrDelim As String = ";" 'Trennzeichen
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.Title = "Datei wählen"
.InitialFileName = "\*.csv"
If .Show = -1 Then
strFileName = .SelectedItems(1)
End If
End With
Rows("6:6").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
Rows("5:5").Select
Selection.ClearContents
If strFileName  "1" 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, 5)
.Cells(lngLast, 1).Resize(, UBound(arrTmp) + 1) _
= Application.Transpose(Application.Transpose(arrTmp))
End With
End If
Next lngR
End If
Cells.Replace What:="Â", Replacement:="", LookAt:=xlPart, SearchOrder:= _
xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="ä", Replacement:="ä", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Rows("5:5").Select
Selection.Delete Shift:=xlUp
Range("K4").Select
End Sub

[/code]

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV-Datei import, importiert nur 2 Files, wieso?
03.12.2018 11:51:28
Matthias
Moin!
M.E. liegt es an dem Code. Mit der Zeile hier
strFileName = .SelectedItems(1)

nimmst du nur das erste ausgewählte Element. Du bräuchtest eine Schleife durch alle ausgewählten. Bspw. so:
For Each dateielement In .SelectedItems
hier deinen Code
next

Alternativ kannst du auch über die Anzahl gehen (.selecteditems.count)
VG
AW: CSV-Datei import, importiert nur 2 Files, wieso?
03.12.2018 12:43:33
Tina232
Hey Matthias,
danke für deine Hilfe.
Wie würde das konkret aussehen in meinem Code?
Gibt es eine Möglichkeit den Inhalt der Tabelle, die bereits vorhanden ist zu löschen?
Ich hab das halt mit dem Makro-Recorder gemacht. Ist vllt etwas unschön und führ dazu, dass ich immer erst die zweite bis letzte Spalte der Tabelle komplette löschen muss und dann nochmal den ersten Tabelleneintrag löschen muss, da ja in einer Tabelle immer eine Spalte stehen bleiben muss.
LG Tina
Anzeige
AW: CSV-Datei import, importiert nur 2 Files, wieso?
03.12.2018 14:39:41
Rudi
Hallo,
Sub CSV_import()
Dim strFileName As String, arrDaten, arrTmp, lngR As Long, lngLast As Long, i As Integer
Const cstrDelim As String = ";" 'Trennzeichen
Application.ScreenUpdating = False
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.Title = "Datei wählen"
.InitialFileName = "\*.csv"
If .Show = -1 Then
Range(Rows(6), Rows(6).End(xlDown)).Delete
Rows(5).ClearContents
For i = 1 To .SelectedItems.Count
strFileName = .SelectedItems(i)
If strFileName  "1" Then
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, 5)
.Cells(lngLast, 1).Resize(, UBound(arrTmp) + 1) _
= Application.Transpose(Application.Transpose(arrTmp))
End With
End If
Next lngR
End If
Next i
End If
End With
Cells.Replace What:="Â", Replacement:="", LookAt:=xlPart, SearchOrder:= _
xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="ä", Replacement:="ä", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Rows(5).Delete Shift:=xlUp
Range("K4").Select
End Sub

Gruß
Rudi
Anzeige
AW: CSV-Datei import, importiert nur 2 Files, wieso?
04.12.2018 15:32:12
Tina232
Viel Dank Rudi :)
Es dauert zwar relativ lang bis alle Daten geladen sind, aber es funktioniert.
Danke LG

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige