Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Formatierung von VBA geöffneter CSV-Datei ändern

Formatierung von VBA geöffneter CSV-Datei ändern
31.05.2017 09:03:55
VBA
Hallo Zusammen,
ich versuche etliche csv-Dateien in ein Excelsheet zu kopieren. Dazu öffne ich per VBA die csv- _
Datei und kopiere den Inhalt. Soweit so gut. Jedoch zeigt es in der CSV die Werte nicht richtig _ an. Unten hab ich ein Beispiel der zu einlesenden Datei. Die Werte mit 0.9xx sind richtig, die 10.xxx müssten 1.0xxx sein.

04:30:00	0.0644	0.8721
04:45:00	0.068	0.9209
05:00:00	0.071	0.9615
05:15:00	0.0732	0.9913
05:30:00	0.07472	10.119
05:45:00	0.07572	10.254
06:00:00	0.0766	10.373
06:15:00	0.07772	10.525
06:30:00	0.07932	10.742
06:45:00	0.08192	11.094
07:00:00	0.086	11.646
07:15:00	0.09192	12.448
07:30:00	0.1004	13.596
07:45:00	0.11192	15.156
Mein Code zum Einlesen ist:

'Dateien in Tabelle1 schreiben
k = 2
Do While True
sPfad = "S:\Eigene Dateien\" 'Pfad des Ordners
strFile = Trim(ThisWorkbook.Worksheets("Tabelle2").Cells(k, 2))
strFileName = sPfad & strFile 'kompletter Dateipfad zum Dateiinhalt
k = k + 1
Debug.Print strFile
If strFile = "" Then
Exit Do
Else
'Öffnen der Datei
Workbooks.Open Filename:=strFileName, Local:=True
Range(Cells(1, 1), Cells(29505, 3)).CurrentRegion.TextToColumns Destination:=Range( _
Cells(1, 1), _
Cells(29505, 3)), DataType:=xlDelimited, Semicolon:=True, DecimalSeparator:=".",  _
ThousandsSeparator:=" ", _
TextQualifier:=xlTextQualifierDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False,  _
Comma:=False, _
Space:=False, TrailingMinusNumbers:=Flase
If Err.Number  0 Then
MsgBox "Daten nicht vorhanden", vbOKOnly + vbCritical
Exit Sub
End If
'Anzahl Zeilen
zeilen = ActiveWorkbook.Worksheets(1).UsedRange.Rows.Count
'letzteZeile ermitteln
letzteZeile = ThisWorkbook.Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp) _
_
_
_
.Row + 1
'Kopieren von SWEIG-E-UST-004
Range("A1:A" & zeilen).Copy Destination:=ThisWorkbook.Worksheets("Tabelle1"). _
Range("A" & letzteZeile)
Range("B1:B" & zeilen).Copy Destination:=ThisWorkbook.Worksheets("Tabelle1"). _
Range("B" & letzteZeile)
Range("C1:C" & zeilen).Copy Destination:=ThisWorkbook.Worksheets("Tabelle1"). _
Range("C" & letzteZeile)
'Schließen der Datei
ActiveWorkbook.Close Filename:=strFileName, savechanges:=False
End If
Loop
Sorry für die schreckliche Darstellung, aber die Code-Zeilen sind einfach zu lang^^
Ich denke der Wurm liegt schon nach dem Öffnen der Datei.
also nach Workbooks.Open usw.
Hier im Forum habe ich schon DecimalSeparator:=".", ThousandsSeparator:=" ", gefunden und eingefügt. Leider muss ich irgendwo nochmals einen Fehler haben.
Ich würde mich freuen, wenn mir jmd weiterhelfen könnte.
Vielen Dank schon mal im Voraus!
Grüße Lari
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formatierung von VBA geöffneter CSV-Datei ändern
01.06.2017 06:02:39
VBA
Hallo Lan,
beim Import von Text/CSV-Dateien in Excel unter VBA sind relevant:
1. Sprachversion von Windows bzw. die Länderspezifischen Einstellungen für Datum und Zahlen
2. Sprachversion von Excel
3. Die Darstellung von Datum/Zahlen und das Trennzeichen in der CSV/Textdatei.
Stimmen die Einstellungen unter Windows mit denen in der Textdatei überein
Deutsch also Trennzeichen = Semikolon, Dezimalzeichen = Komma, 1000er-Zeichen = Punkt
Datum = TT.MM.JJJJ
Dann muss man "nur" den Parameter Local auf True setzen und der Import sollte korrekt sein.
Stimmen die Einstellungen in der Textdatei mit den US-Einstellungen überein
Trennzeichen = Komma, Dezimalzeichen = Punkt, 1000er-Zeichen = nicht vorhanden
Datum = MM\TT\JJJJ
dann funktioniert der Import mit Parameter Local=False - oder man lässt ihn weg.
Weicht die Darstellung von Zahlen/Datum dann muss man sich um die Besonderheiten der Formatierungen in der Textdatei kümmern.
Damit dir konkret gehlfen werden kann musst du hier mal eine CSV/TXT-Datei mit ein paar Beispiel-Datensätzen hochladen.
Eine Datei mit vielen Datenzeilen kannst du in einem Texteditor einkürzen. Personenbezogene Daten ggf. anonymisieren.
Gruß
Franz
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

CSV-Datei mit VBA richtig formatieren


Schritt-für-Schritt-Anleitung

Um eine CSV-Datei in Excel per VBA zu öffnen und richtig zu formatieren, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“, wähle „Einfügen“ und dann „Modul“.

  3. Kopiere den folgenden Code in das Modul, um die CSV-Datei zu öffnen und zu formatieren:

    Sub OpenAndFormatCSV()
        Dim k As Integer
        Dim sPfad As String
        Dim strFile As String
        Dim strFileName As String
        Dim zeilen As Long
        Dim letzteZeile As Long
    
        k = 2
        Do While True
            sPfad = "S:\Eigene Dateien\"
            strFile = Trim(ThisWorkbook.Worksheets("Tabelle2").Cells(k, 2))
            strFileName = sPfad & strFile
            k = k + 1
    
            If strFile = "" Then Exit Do
    
            ' Öffnen der CSV-Datei
            Workbooks.Open Filename:=strFileName, Local:=True
    
            ' Text zu Spalten aufrufen
            Range(Cells(1, 1), Cells(29505, 3)).CurrentRegion.TextToColumns Destination:=Range( _
                Cells(1, 1), Cells(29505, 3)), DataType:=xlDelimited, Semicolon:=True, _
                DecimalSeparator:=".", ThousandsSeparator:=" ", TextQualifier:=xlTextQualifierDoubleQuote
    
            ' Anzahl der Zeilen ermitteln
            zeilen = ActiveWorkbook.Worksheets(1).UsedRange.Rows.Count
    
            ' Letzte Zeile in Tabelle1 ermitteln
            letzteZeile = ThisWorkbook.Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row + 1
    
            ' Daten kopieren
            Range("A1:C" & zeilen).Copy Destination:=ThisWorkbook.Worksheets("Tabelle1").Range("A" & letzteZeile)
    
            ' Datei schließen
            ActiveWorkbook.Close Filename:=strFileName, SaveChanges:=False
        Loop
    End Sub
  4. Anpassen der Einstellungen: Achte darauf, die DecimalSeparator und ThousandsSeparator gemäß deiner regionalen Einstellungen zu setzen.


Häufige Fehler und Lösungen

  1. Falsche Werte nach dem Import: Wenn die Zahlen nicht richtig angezeigt werden (z. B. 10.xxx anstelle von 1.0xxx), überprüfe die regionalen Einstellungen von Windows und Excel. Diese sollten mit den Trennzeichen in der CSV-Datei übereinstimmen.

  2. CSV-Datei nicht zu finden: Stelle sicher, dass der Pfad zur CSV-Datei korrekt ist. Teste den Pfad in einem Datei-Explorer.

  3. Fehlermeldung bei der Ausführung: Wenn du eine Fehlermeldung erhältst, überprüfe, ob die Datei tatsächlich Daten enthält. Füge eine Fehlerbehandlung in deinen Code ein, um besser nachvollziehen zu können, wo das Problem liegt.


Alternative Methoden

Wenn du die CSV-Datei nicht über VBA importieren möchtest, kannst du die Datei auch manuell öffnen:

  1. Gehe zu „Daten“ > „Daten abrufen“ > „Aus Text/CSV“.
  2. Wähle deine CSV-Datei aus.
  3. Im Importdialog kannst du die Trennzeichen und das Dezimalformat einstellen, um sicherzustellen, dass die Daten korrekt importiert werden.

Praktische Beispiele

  • Beispiel 1: Wenn deine CSV-Datei folgende Struktur hat:

    Zeit, Wert1, Wert2
    04:30:00, 0.0644, 10.119

    Stelle sicher, dass du die Trennzeichen korrekt einstellst, um die Werte ordentlich zu trennen.

  • Beispiel 2: Um die CSV-Datei nach dem Import zu formatieren, kannst du zusätzliche VBA-Befehle verwenden, um die Schriftart oder die Hintergrundfarbe der Zellen zu ändern.


Tipps für Profis

  • Nutze Application.ScreenUpdating = False, um die Bildschirmaktualisierung während des Imports zu deaktivieren. Dadurch wird der Import schneller und ohne flackernde Bildschirme durchgeführt.

    Application.ScreenUpdating = False
    ' Dein Importcode hier
    Application.ScreenUpdating = True
  • Vermeide es, große Datenmengen in einer Schleife zu verarbeiten. Stattdessen kannst du die Daten in einem Schritt importieren und dann nach Bedarf filtern oder formatieren.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die CSV-Datei richtig formatiert ist? Überprüfe die regionalen Einstellungen von Windows und Excel. Die Trennzeichen in der CSV-Datei müssen mit diesen Einstellungen übereinstimmen.

2. Was mache ich, wenn die Daten nicht korrekt importiert werden? Stelle sicher, dass du die richtigen Parameter für TextToColumns gesetzt hast und dass die CSV-Datei die richtigen Trennzeichen verwendet.

3. Kann ich die Formatierung der CSV-Datei vor dem Import ändern? Ja, öffne die CSV-Datei in einem Texteditor und ändere die Trennzeichen oder die Struktur nach Bedarf, bevor du sie in Excel importierst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige