Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1284to1288
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

Probleme mit CSV-Datei

Probleme mit CSV-Datei
01.11.2012 15:44:36
Dirk
Hallo zusammen,
ich habe schon einige verschiedene Sachen probiert und habe immer noch das gleiche Problem. Ich habe eine CSV-Datei, die in den ersten 14 Zeilen allgemeine Daten hat und dann erst ab Zeile 15 die eigentlichen, mit Komma getrennten, Messdaten.
Loesche ich die ersten 14 Zeilen, laeuft das Programm ohne Probleme. Lasse ich die Zeilen in der Datei, kommt ein Error.
Hier mal der Code:
Sub data_import()
Dim MyData As String, strData() As String, TmpAr() As String, strFileName As String
Dim TwoDArray() As String
Dim i As Long, n As Long, ia As Long
Const Delim As String = ","
Close #1  'event geoeffnete Dateien werden geschlossen
'    With Application.FileDialog(msoFileDialogFilePicker)
'        .AllowMultiSelect = False
'        .Title = "Select file"
'        .InitialFileName = "c:\"  'Pfad anpassen
'        .Filters.Add "CSV-Dateien", "*.csv", 1
'        If .Show = -1 Then
'          strFileName = .SelectedItems(1)
'        End If
'     End With
strFileName = "C:\Users\test3.csv"  'zum Testen der Datei
If strFileName  "" Then
Application.ScreenUpdating = False
'        Workbooks.Open strFileName
'            Rows("1:14").Select
'            Selection.Delete Shift:=xlUp
'        Workbooks.Close
Open strFileName For Binary As #1
MyData = Space$(LOF(1))
Get #1, , MyData
Close #1
strData() = Split(MyData, vbCrLf)
ia = 1
For i = LBound(strData) To UBound(strData) - 1
strData(i) = Right(strData(i), Len(strData(i)) - 1)
strData(i) = Left(strData(i), Len(strData(i)) - 1)
TmpAr = Split(strData(i), Delim)
If UBound(TmpAr) > -1 Then
With ActiveSheet
.Cells(ia, 1).Resize(, UBound(TmpAr) + 1) _
= Application.Transpose(Application.Transpose(TmpAr))
End With
End If
ia = ia + 1
Next i
End If
End Sub

Gibt es eine Moeglichkeit, die ersten 15 Zeilen einfach zu ignorieren? Ich habe schon probiert, die Zeilen einfach zu loeschen, aber dann veraendere ich auch meine Originaldatei.
Es muss doch einen weg geben, das ARRAY erst ab Zeile 15 einzulesen.
Ueber jede Hilfe waere ich sehr dankbar.
Viele Gruesse und DANKE
Dirk

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Probleme mit CSV-Datei
01.11.2012 16:16:44
Luschi
Hallo Dirk,
Du hast docjh schon eine Zähl-Variable 'ia'. Binde sie so in die Forschleife ein:

ia = 1
For i = LBound(strData) To UBound(strData) - 1
If ia > 14 Then  ' oder 15!? - mußt Du mal  _
testen!
strData(i) = Right(strData(i), Len(strData(i)) - 1)
strData(i) = Left(strData(i), Len(strData(i)) - 1)
TmpAr = Split(strData(i), Delim)
If UBound(TmpAr) > -1 Then
With ActiveSheet
.Cells(ia - 14, 1).Resize(, UBound( _
TmpAr) + 1) _
= Application.Transpose(Application.Transpose(TmpAr))
End With
End If
End If
ia = ia + 1
Next i
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Probleme mit CSV-Datei
01.11.2012 19:43:24
Dirk
Hallo Luschi,
vielen Dank fuer die schnelle Antwort. Das hatte ich so aehnlich auch schon probiert.
Leider ueberspringt er den Teil schon im Quellcode. Er springt bei
For i = LBound(strData) To UBound(strData) - 1
.
.
.
next i
end if
direkt zu end if.
Der Inhalt von MyData ist in dem Moment: ÿþN a m e : , T E S T ....
LBound(strData) und UBound(strData) haben den Inhalt 0 (NULL).
Deshalb wird die If-Schleife nicht ausgefuehrt.
Gibt es irgendwelche Ideen?
Vielen Dank
Dirk

AW: Probleme mit CSV-Datei
02.11.2012 07:13:41
Luschi
Hallo Dirk,
habe Dir mal mit Deinem Vba-Code ein Beispiel gemacht. Kopiere die Excel- und CSV-Datei
in ein gemeinsames Verzeichnis.
https://www.herber.de/bbs/user/82446.zip
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Probleme mit CSV-Datei
02.11.2012 14:54:36
Dirk
Hallo Luschi,
echt vielen DANK fuer Deine Hilfe. Aber leider klappt es nicht. Ich finde auch nicht die Ursache.
Aus diesem Grund gebe ich Dir mal einen Teil meiner Datei.
https://www.herber.de/bbs/user/82451.zip
Vielleicht hast Du oder jemand anderes eine Idee, warum das nicht geht.
Ich verstehe es nicht. Mit Deiner Datei war das gar kein Problem. Bei meiner ist am Ende das Blatt wieder leer.
Vielen Dank fuer Deine Hilfe.
Viele Gruesse
Dirk

AW: Probleme mit CSV-Datei
02.11.2012 16:11:18
Luschi
Hallo Dirk,
kann Dein Problem nicht nachvollziehen. Habe im Vba-Code nur die 2 Zeilen aktiviert, um die doppelten Anführungsstriche zu entfernen.
https://www.herber.de/bbs/user/82455.zip
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Probleme mit CSV-Datei
02.11.2012 16:46:19
Dirk
Hallo Luschi,
nochmals vielen Dank. Mit meiner Originalversion klappt es leider nicht. Mit der von Dir geschickten klappt es. Da scheint wohl etwas in Excel falsch eingestellt zu sein. Sehr komisch. Kopiere ich alle DATEN aus meiner CSV-Datei in Deine, dann klappt es auch. Nutze ich aber meine Originaldatei, dann beibt der Import LEER. Muss ich das verstehen?
Alles sehr seltsam. So etwas schon mal gehabt?
Viele Gruesse und DANKE
Dirk
P.S.: Ist mit klein-Paris ein Ort an der Mosel gemeint?

AW: Probleme mit CSV-Datei
02.11.2012 20:05:28
Luschi
Hallo Dirk,
wenn du willst/kannst/darfst usw. - schicke mir doch die gezippte Original-CSV-Datei an:
fam.nuck.at.primacom.net
Ersetze in der EMail-Adresse .at. gegen @
Nicht immer ist eine von außen gekennzeichnete CSV-DAtei (Dateityp) das,
was tatsächlich in ihr steckt.
Ein Blick mit einem Hex-Editor in die CSV-Datei sagt mehr als 1000 Beschreibungen.
Gruß von Luschi
aus klein-Paris
PS: klein-Paris - siehe http://de.wikipedia.org/wiki/Klein-Paris (Goethe)

Anzeige
AW: Probleme mit CSV-Datei
05.11.2012 14:40:42
Dirk
Hallo zusammen,
ich moechte mich hier noch einmal ganz ganz herzlich bei Luschi bedanken. Ohne dessen Hilfe haette ich das Problem NIEMALS loesen koennen. Ich moechte Euch aber auch die Loesung nicht vorenthalten, die mir Luschi geschickt hat:
Sub data_import()
On Error GoTo Errorhandler
Dim MyData As String, strData() As String, TmpAr() As String, strFileName As String
Dim TwoDArray() As String
Dim i As Long, n As Long, ia As Long, intFF As Integer
Dim rg1 As Range, rg2 As Range
Const Delim As String = ","
Close #1  'event geoeffnete Dateien werden geschlossen
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "Select file"
.InitialFileName = "c:\"  'Pfad anpassen
.Filters.Add "CSV-Dateien", "*.csv", 1
If .Show = -1 Then
strFileName = .SelectedItems(1)
End If
End With
If strFileName  "" Then
GetMoreSpeed True
ThisWorkbook.Worksheets("Tabelle1").Cells.Clear
intFF = FreeFile
Open strFileName For Binary As #intFF
MyData = Space$(LOF(1))
Get #intFF, , MyData
Close #intFF
strData() = Split(MyData, vbLf)
ia = 1
For i = LBound(strData) To UBound(strData) - 1
If ia > 14 Then
TmpAr = Split(strData(i), Delim, -1, vbTextCompare)
If UBound(TmpAr) > -1 Then
With ActiveSheet
'Zellbereich, in den geschrieben werden soll
Set rg1 = .Cells(ia - 14, 1).Resize(, UBound(TmpAr) + 1)
n = 0
For Each rg2 In rg1
'&0H-Werte entfernen
rg2.Value = Replace(TmpAr(n), Chr(0), "", 1, -1, vbBinaryCompare)
n = n + 1
Next rg2
End With
Else
Debug.Print TmpAr(0)
End If
End If
ia = ia + 1
Next i
Erase strData()
Erase TmpAr()
Erase TwoDArray()
End If
GetMoreSpeed False
ActiveSheet.Range("A1").Select
MsgBox "F e r t i g!", vbInformation Or vbSystemModal
Exit Sub
Errorhandler:
GetMoreSpeed False
On Error Resume Next
Close intFF
MsgBox "Fehler beim Einlesen...!" & String(75, 160), vbSystemModal Or vbCritical,  _
strFileName
End Sub
Es funktioniert alles ohne Probleme und ich konnte schon die letzten Aenderungen einpflegen. Die von einem Datenlogger produzierte CSV-Datei war wohl eine Katastrophe.
VIELEN VIELEN DANK !!!
Viele Gruesse
Dirk
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige