Wie mittels VBA beim Import von CSV dateien das Format aller Zellen auf "Zahl" ändern?
Hallo,
Ich habe folgendes Problem und hoffe sehr, dass mir hier jemand von euch behilflich sein kann:
Ich Importiere mittels folgendem Skript mehrere CSV Dateien aus einem Ordner in eine Excel Mappe, wobei jede CSV Datei eine separate Tabelle ist: (Danke an den Nutzer colinardo dafür.
Ich brauche dieses Skript um eine Monatsstatistik zu erstellen und jede csv Datei repräsentiert einen Tag. Also habe ich Optimalerweise eine Excel Mappe mit 30-31 Tabellen und am Ende erstelle ich eine neue Tabelle welche alle werte von allen Tagen zusammenrechnet.
Problem ist jedoch, dass aus einem mir unerfindlichen Grund Excel anscheinend zufällig manche Zellen, welche nur mit Nummern befüllt sind als Standard-Format behandelt und manche nicht. D.h ich kann meine Zellen nicht zusammen Rechnen, da Excel denkt in manchen stehe Text und keine Zahl.
Meine Frage ist nun, wie ich am besten in meinem Import-Skript implementieren kann, dass einfach alle Zellen in allen CSV Dateien (dann Tabellen) als Zahl Formatiert sind, damit ich diese zusammenrechnen kann. Es befindet sich zwar auch Text in den Dateien, aber ob dieser als Text oder als Zahl formatiert ist schein irrelevant zu sein.
Ich bin unendlich dankbar für jegliche Hilfe, oder jeden Denkanstoß!!!
Ich arbeite mit Office 2016 und verwende Windows 10, fall das relevant ist.
MfG,
Niki
Ich habe folgendes Problem und hoffe sehr, dass mir hier jemand von euch behilflich sein kann:
Ich Importiere mittels folgendem Skript mehrere CSV Dateien aus einem Ordner in eine Excel Mappe, wobei jede CSV Datei eine separate Tabelle ist: (Danke an den Nutzer colinardo dafür.
Sub ImportiereCSVDateien()
Const CSVPFAD = "E:\csv-dateien"
Dim wbTarget As Workbook, wbSource As Workbook, ws As Worksheet
Set fso = CreateObject("Scripting.Filesystemobject")
Set wbTarget = ActiveWorkbook
Application.DisplayAlerts = False
'Lösche alle Worksheets bevor wir alle neu anlegen
If wbTarget.Worksheets.Count > 1 Then
For i = 1 To wbTarget.Worksheets.Count - 1
wbTarget.Worksheets(i).Delete
Next
End If
For Each f In fso.GetFolder(CSVPFAD).Files
If LCase(Right(f.Name, 3)) = "csv" Then
Workbooks.OpenText Filename:=f.Path
Set wbSource = ActiveWorkbook
On Error Resume Next
Set ws = wbTarget.Worksheets(f.Name)
If Err <> 0 Then
Set ws = wbTarget.Worksheets.Add
ws.Name = f.Name
ws.Range("A:ZZ").Clear
End If
wbSource.Worksheets(1).Range("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Semicolon:=True, TrailingMinusNumbers:=True
wbSource.Worksheets(1).Range("A:ZZ").Copy Destination:=ws.Range("A1")
wbSource.Close False
End If
Next
Application.DisplayAlerts = True
Set fso = Nothing
End Sub
Ich brauche dieses Skript um eine Monatsstatistik zu erstellen und jede csv Datei repräsentiert einen Tag. Also habe ich Optimalerweise eine Excel Mappe mit 30-31 Tabellen und am Ende erstelle ich eine neue Tabelle welche alle werte von allen Tagen zusammenrechnet.
Problem ist jedoch, dass aus einem mir unerfindlichen Grund Excel anscheinend zufällig manche Zellen, welche nur mit Nummern befüllt sind als Standard-Format behandelt und manche nicht. D.h ich kann meine Zellen nicht zusammen Rechnen, da Excel denkt in manchen stehe Text und keine Zahl.
Meine Frage ist nun, wie ich am besten in meinem Import-Skript implementieren kann, dass einfach alle Zellen in allen CSV Dateien (dann Tabellen) als Zahl Formatiert sind, damit ich diese zusammenrechnen kann. Es befindet sich zwar auch Text in den Dateien, aber ob dieser als Text oder als Zahl formatiert ist schein irrelevant zu sein.
Ich bin unendlich dankbar für jegliche Hilfe, oder jeden Denkanstoß!!!
Ich arbeite mit Office 2016 und verwende Windows 10, fall das relevant ist.
MfG,
Niki
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 307118
Url: https://administrator.de/forum/wie-mittels-vba-beim-import-von-csv-dateien-das-format-aller-zellen-auf-zahl-aendern-307118.html
Ausgedruckt am: 17.05.2025 um 15:05 Uhr
2 Kommentare
Neuester Kommentar
Hallo,
Nach den Importieren die Spalte welche nun als Darstellung das Format Zahlen haben soll markieren und per VBS ändern. Dann erst dein Code verlassen. Passend währe an folgender Stelle - nach deiner zeile 27 und vor Zeile 28 eingefügt.
Excel 2016 zeigt dir in Aufgezeichnete Makros wie das ganze (Zeile Markieren, Format wählen) aussieht. Mehr als diese 2 zeile braucht es nicht.
Gruß,
Peter
Zitat von @Glibber4:
Problem ist jedoch, dass aus einem mir unerfindlichen Grund Excel anscheinend zufällig manche Zellen, welche nur mit Nummern befüllt sind als Standard-Format behandelt und manche nicht.
Na, da wird dann in der zelle eben nicht nur Text stehen, auch wenn es dir so scheint. Das was du nicht siehst muss ja nicht zwingend sichtbar sein, z.B. leerzeichen usw. Dann stehen für dich dort sichtbar zwar nur Zahlen, aber es ist eben ein text dort..Problem ist jedoch, dass aus einem mir unerfindlichen Grund Excel anscheinend zufällig manche Zellen, welche nur mit Nummern befüllt sind als Standard-Format behandelt und manche nicht.
Meine Frage ist nun, wie ich am besten in meinem Import-Skript implementieren kann, dass einfach alle Zellen in allen CSV Dateien
Innerhalb der CSV dateien gibt es kein Format. CSV = Comma Seperated Value = aneinanderreihung von Zahlen und Buchstaben nur durch feste Länge oder Trennzeichen deiner Wahl getrennt und Zeilenweise angeordnet.Nach den Importieren die Spalte welche nun als Darstellung das Format Zahlen haben soll markieren und per VBS ändern. Dann erst dein Code verlassen. Passend währe an folgender Stelle - nach deiner zeile 27 und vor Zeile 28 eingefügt.
Excel 2016 zeigt dir in Aufgezeichnete Makros wie das ganze (Zeile Markieren, Format wählen) aussieht. Mehr als diese 2 zeile braucht es nicht.
Gruß,
Peter