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

VBA CSV Import stoppt bei komma

VBA CSV Import stoppt bei komma
16.09.2020 11:12:54
Patrik
Hallo zusammen,
Ich bin neu hier, und habe nicht viel VBA Erfahrung.
Wir benutzen in unserer Firma eine Vorlage für den Import aller *.csv Files aus dem gleichen Ordner. Wir haben nun eine neue Verpackungsanlage erhalten, wo der Lieferant das Format oder besser gesagt die Anordnung geändert der csv Files geändert hat.
Im früheren File waren es nur Zahlen, welche durch ein Semikolon getrennt waren. Nun ist da auch noch Text mit dabei, welcher teilweise Kommas beinhaltet.
Ich habe das Makro nun so hinbekommen, dass der Text importiert wird, und auch das Datum am richtigen Ort hingeschrieben wird.
Leider stoppt das Makro, sobald im Text ein Komma vorhanden ist.
Kann mir da Jemand eine Tipp geben?
Ich verwende dieses Makro:

Sub DatenErfassen()
VorhandeneDatenLoeschen
Dateiname = Dir(ThisWorkbook.Path & "\*.CSV")
ErsteDatei = Dateiname
abschliessen = False
If Dateiname = ThisWorkbook.Name Then
Dateiname = Dir
If Dateiname = ThisWorkbook.Name Then
abschliessen = True
End If
End If
Zeile2 = 8
While (Dateiname  "" And Not abschliessen)
If (Not Dateiname = ThisWorkbook.Name) Then
Set Datei = Workbooks.Open(ThisWorkbook.Path & "\" & Dateiname)
Zeile = 9
Text = ActiveSheet.Cells(4, 1).Value
Stelle1 = InStr(Text, ";")
Datum = Mid(Text, Stelle1 + 1, 10)
Do While ActiveSheet.Cells(Zeile, 1).Value  ""
Zeile2 = Zeile2 + 1
Text = ActiveSheet.Cells(Zeile, 1).Value
Stelle1 = 0
For Spalte = 1 To 5
Stelle2 = InStr(Stelle1 + 1, Text, ";")
If Stelle2 = 0 Then
Stelle2 = Len(Text) + 1
End If
ThisWorkbook.Worksheets("Daten").Cells(Zeile2, Spalte).Value = Mid(Text, Stelle1 + 1,  _
_
_
Stelle2 - Stelle1 - 1)
Stelle1 = Stelle2
Next Spalte
ThisWorkbook.Worksheets("Daten").Cells(Zeile2, 5).Value = Datum
Zeile = Zeile + 1
Loop
Datei.Close
End If
Dateiname = Dir
If Dateiname = ErsteDatei Then
abschliessen = True
End If
Wend
End Sub

das alte csv:
Alarm number;Activated;Deactivated;Time alarm active
368;00:38:36;00:38:40;00:00:04;
7;00:46:27;00:48:18;00:01:51;
das neue csv:
Alarm number;Description;Activated;Deactivated;Time alarm active
199;0199) Karton Aufsetzer: Kein Karton i Befüllposition.| (sensor S4.7);19:31:25;10:56:17;15:24:52;
1;0001) Comm.: Sicherheitskreis ist nicht zurückgesetzt.;10:56:16;10:56:17;00:00:01;
240;0240) Pick und Place: Rahmen nicht.| (sensor S5.9, Ventil Y12.3);10:56:23;10:57:35;00:01:12;
Bei den Komma S5.9, stoppt der Import.
Beim Debug wird diese Zeile gelb markiert:
ThisWorkbook.Worksheets("Daten").Cells(Zeile2, Spalte).Value = Mid(Text, Stelle1 + 1, Stelle2 - Stelle1 - 1)
Ich verwende Excel 365
Ich hoffe ihr könnt mir da weiterhelfen.
Viele Grüße,
Patrik

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA CSV Import stoppt bei komma
16.09.2020 11:31:56
Günther
Moin,
warum VBA (was du deiner Aussage nach nicht besonders beherrscht), wo es doch für eure Version eine deutlich benutzerfreundlichere Alternative gibt? => Power Query
 
Gruß
Günther  |  mein Excel-Blog
AW: VBA CSV Import stoppt bei komma
16.09.2020 11:40:42
peterk
Hallo
Mit Workbook.Open wird die CSV Datei als Komma-Separierte Datei eingelesen. In deinem ursprünglichen Format kamen keine Kommas vor und somit landete alles in Spalte 1, die Dein Code dann mühsam zerpflückte(kleine Tipp: mit der "Split" Funktion würde alles einfacher gehen). Da Du nun ein Komma hast, werden 2 Spalten angelegt (oder auch noch mehr). Dein Code erwartet aber am Ende des Strings ein ";" was bei der Aufteilung auf 2 Spalten aber nicht mehr vorhanden ist, daher der Fehler.
Lösung: Öffne die Datei mit

Set Datei = Workbooks.Open(ThisWorkbook.Path & "\" & Dateiname) Delimiter:=";"

und alles ist wunderschön in Spalten aufgeteilt.
Wenn Du Deinen Code beibehalten willst, verwende als Delimiter z.b. "@" und Du hast alles wieder in einer Spalte.
Peter
Anzeige
AW: VBA CSV Import stoppt bei komma
16.09.2020 14:49:31
Patrik
Hallo Peter
Ich habe das mit dem Delimiter:=";" versucht, erhalte aber die gleiche Fehlermeldung. Oder habe ich da etwas nicht richtig verstanden.
Ich habe so versucht:
Workbooks.Open(ThisWorkbook.Path & "\" & Dateiname, Delimiter:=";")
Oder funktioniert das nur mit dem Split?
Patrik
AW: VBA CSV Import stoppt bei komma
17.09.2020 08:46:19
peterk
Hallo Patrik
Deine Syntax ist falsch. Nimm es genau so wie ich es geschrieben habe.
Peter
AW: VBA CSV Import stoppt bei komma
17.09.2020 10:47:16
Patrik
Hallo Peter
Das habe ich auch versucht, aber dann erhalte ich die Fehlermeldung : Fehler beim Kompilieren: Erwartet: Anweisungsende. Oder Fehler beim Kompilieren: Syntaxfehler
Patrik
Anzeige
AW: VBA CSV Import stoppt bei komma
17.09.2020 11:31:58
peterk
Hallo Patrik
Sorry, ich hab eine Beistrich vergessen. Richtig:

Set Datei = Workbooks.Open(ThisWorkbook.Path & "\" & Dateiname), Delimiter:=";"
Peter
AW: VBA CSV Import stoppt bei komma
17.09.2020 12:38:24
Patrik
Hallo Peter
Ja das hatte ich auch schon probiert, bekomme aber auch die Fehlermeldung : Fehler beim Kompilieren: Syntaxfehler
Patrik

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige