Spalte in Excel per VBA formatieren

Ok, auch wenn du (noch) nicht auf meine Antwort via PN reagiert hast, hier nochmal eine Lösung für dein Problem.

Visual Basic:
Sub csv_open()
'Aufbau der CSV-Datei: ID;Text;Zahl
'zum Beispiel so
'902803576601;Beliebiger Text 1 als Artikelbeschreibung oder so;99,99
'902803576602;Beliebiger Text 2 als Artikelbeschreibung oder so;111,11
'902803576603;Beliebiger Text 3 als Artikelbeschreibung oder so;222,22

'Zeilenzähler für die DO/LOOP-Schleife
zeile = 1
'Array zum Einlesen der CSV-Datei
Dim inhalt() As String
'freie Dateinummer zum Öffnen
datei = FreeFile
'Öffnen Dialog um die CSV auszuwählen
dateiname = Application.GetOpenFilename("CSV-Dateien (*.csv), *.csv,Text-Dateien (*.txt), *.txt")
'wenn keine Datei ausgewählt wurde, wird Sub verlassen
If dateiname = False Then
    Close
    Exit Sub
Else
'ansonsten wird die Datei geöffnet
    Open dateiname For Input As #datei
End If
'In Spalte A werden die IDs eingelesen, deshalb bereits hier die Spalte (mit 20 Stellen) formatieren
Range("A:A").Select
Selection.NumberFormat = "####################"
'Datei zeilenweise einlesen und Angaben eintragen
Do
    Line Input #datei, ReadLine
    
    If ReadLine <> "" Then
        inhalt() = Split(ReadLine, ";")
        Cells(zeile, 1) = inhalt(0) 'Spalte A bekommt die bis zu 20 Zeichen langen IDs
        Cells(zeile, 2) = inhalt(1) 'Spalte B bekommt hier einen beliebigen Text
        Cells(zeile, 3) = inhalt(2) 'Spalte C bekommt hier eine Zahl/den Preis
        zeile = zeile + 1
    End If
Loop Until EOF(datei)

Close
End Sub

Wenn der obige Code ausgeführt wird, wirst du zuerst aufgefordert eine CSV- bzw. TXT-Datei auszuwählen um sie zu öffnen. Anschließend wird im Beispiel die Spalte A so formatiert das die eingelesenen IDs im gewünschten Format erhalten bleiben und dann die Datei eingelesen.

Ich habe es bei mir mit verschiedenen IDs probiert. Sie werden korrekt eingelesen, dargestellt und man kann sie auch in Excel bearbeiten/ändern ohne das die Formatierung verlorengeht.

Versuche es damit nochmal ansonsten um nochmal auf deine Frage zu antworten: Ja du kannst mir die Originaldatei mal zuschicken und ich teste es damit auch. Meine eMail Adresse(n) hast du ja.

Gruß Thomas
 
Hallo Thomas,

habe ein ähnliches Problem und habe deinen o.g. vb code genutzt. Das hat soweit auch alles ganz gut funktioniert.
Allerdings wird in deinem Beispiel nur eine Zeile aufgelistet. Da in meiner csv. datei mehrere Zeilen vorhanden sind und diese auch benötigt werden, müsste ich nur wissen, welche Veränderung ich in deinem code vornehmen müsste, damit diese auch übernommen werden.
Ich hoffe du kannst mir helfen.

Viele Grüße Chris
 
Ich würde vor die Zahl ein Hochkomma setzen, dieses wird in der Zelle selbst nicht dargestellt und zwingt Excel dazu die Zahl als Text zu behandeln.
 
Hallo Thomas,

habe ein ähnliches Problem und habe deinen o.g. vb code genutzt. Das hat soweit auch alles ganz gut funktioniert.
Allerdings wird in deinem Beispiel nur eine Zeile aufgelistet. Da in meiner csv. datei mehrere Zeilen vorhanden sind und diese auch benötigt werden, müsste ich nur wissen, welche Veränderung ich in deinem code vornehmen müsste, damit diese auch übernommen werden.
Ich hoffe du kannst mir helfen.

Viele Grüße Chris

Ich versteh dein Problem nicht, dass nur eine Zeile eingelesen wird. tombe hat in seinem Code oben eindeutig eine Schleife drin, die alle Zeilen aus der CSV ausliest. Dass bei dir nur eine Zeile kommt, liegt also eher daran, dass mit deiner CSV etwas nicht stimmt.

EDIT: Ich würde dir mal empfehlen, da per Einzelschritt durchzugehen. Ich tippe mal drauf, dass du irgendwo ne Fehlerbehandlungsroutine hast, die dann nach der ersten Zeile dich aus der Schleife wirft.
 
Zuletzt bearbeitet:
Zurück