Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1508to1512
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 auslesen.

csv. Datei auslesen.
11.08.2016 05:11:59
Markus
Hallo zusammen,
ich habe das folgende Macro zum laden von csv. Datein in eine Excel-Tab verwendet:
Sub load()
Dim wks As Worksheet
Dim vFile As Variant
Application.ScreenUpdating = False
Set wks = ActiveSheet
vFile = Application.GetOpenFilename("Textdateien (*.csv), *.csv")
If vFile = False Then Exit Sub
'ActiveSheet.Cells.Delete
Range("A21:F9999").Select
Selection.ClearContents
Workbooks.OpenText Filename:=vFile, Tab:=False, semicolon:=True, comma:=False, Space:=False,  _
_
other:=False
ActiveSheet.UsedRange.Copy wks.Range("A21")
ActiveWorkbook.Close savechanges:=False
Range("A15").Select
Application.ScreenUpdating = True
End Sub
Das Beispiel habe ich von dieser Seite. Beim Einfuegen wird die csv Datei geladen allerdings wird nicht wie gewuenscht das Semikolon als Trennung verwendet.
sondern das Komma. Kann es an der Windowsversion liegen? Ich verwende eine englische Windows+ Excel Version?
2. Frage: Von meiner Testdatei benoetige ich eigentlich die Daten erst ab der 6. Zeile, wie kann ich das Einlesen erst ab der 6oder zum Beispiel 5. usw. beginnen lassen.
Vielen Dank.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: csv. Datei auslesen.
11.08.2016 07:18:59
Bastian
Hey Nimm doch das
Gruß Basti
Sub Datei_CSV_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:\"  'Pfad anpassen
.Filters.Add "CSV-Dateien", "*.csv", 1
.Filters.Add "Alle Dateien", "*.*", 2
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 = 0 To 5 '1 Bis zur 6 Zeile       '5 to UBound(arrDaten) 5 bis Komplette Seite
arrTmp = Split(arrDaten(lngR), cstrDelim)
MsgBox Join(arrTmp, ",")
If UBound(arrTmp) > -1 Then
With ActiveSheet
lngLast = .Cells(Rows.Count, 1).End(xlUp).Row + 1
lngLast = Application.Max(lngLast, 1)
.Cells(lngLast, 1).Resize(, UBound(arrTmp) + 1) = Application.Transpose( _
Application.Transpose(arrTmp))
End With
End If
Next lngR
End If
Sheets(1).Range("A1") = strFileName 'Dateiname in Blatt1!A1
End Sub

Anzeige
AW: csv. Datei auslesen.
14.08.2016 10:07:02
Markus
Hallo Basti,
prinzipill funktioniert es. Damit ich es verwenden kann müsste ich aber ein par Anpassungen vornehmen die ich nicht hinbekomme.
Die Datensätze aus der csv. sollen beginnen in Tabelle1. A16 eingelesen werden.
In der cvs soll ab Zeile 6 bis zum Ende der Datei gelesen werden. Und die Daten werden als string gespeichert, dadurch kann ich die Zahlenwrte nicht zur Berechnung verwenden.
Was kann ich tun?
AW: csv. Datei auslesen.
14.08.2016 10:18:24
Markus

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:\"  '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 = 6 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, 16)
.Cells(lngLast, 1).Resize(, UBound(arrTmp) + 1) _
= Application.Transpose(Application.Transpose(arrTmp))
End With
End If
Next lngR
End If
End Sub
Das ganze sieht jetzt so aus, nur das mit der Formatierung bekomme ich nicht hin. Wie gesagt jede Zelle wird als TEXT gespeichert, ab der 3. Spalte sind es allerdings Dezimalzahlen.
Anzeige
AW: csv. Datei auslesen.
16.08.2016 15:50:10
Piet
Hallo Markus,
bezüglich Format: wie sieht es aus wenn du die Zellen vor dem kopieren richtig formatierst?
Wird dann bei Zahlen auch Text eingetragen. Wenn ja kann man einen blööden Trick versuchen.
Es klappt nicht immer, aber ein Versuch lonht sich sicher. Excel formatier es dann selbst um.
mfg Piet
For each j in Range(Bereich)
j.Value = j.Value
next j
For Each j in Range(Bereich)
j.Value = CLng(J)  'oder Double
next j

AW: Offen stellen vergessen owT
16.08.2016 20:34:35
Piet
,,,

68 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige