glibber4
Goto Top

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.

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

Content-Key: 307118

Url: https://administrator.de/contentid/307118

Printed on: April 24, 2024 at 16:04 o'clock

Member: Pjordorf
Solution Pjordorf Jun 14, 2016 updated at 20:50:30 (UTC)
Goto Top
Hallo,

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..

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
Member: Glibber4
Glibber4 Jun 16, 2016 at 14:49:52 (UTC)
Goto Top
Danke hat alles fehlerfrei geklappt!