Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: CSV in XLS Konvertieren

CSV in XLS Konvertieren
22.12.2013 12:19:55
Pere
Ups, ich hatte vergessen einen Aussagekräftigen Titel einzugeben. Sorry.
Hallo,
ist es möglich, das unten stehen Makro so zu modifizieren, dass auswählbar ist, welches Trennzeichen für die Konvertierung von CSV zu XLS genommen wird (Komma, Semikolon, etc.)? Aktuell sind die CSV Dateien mit einem Semikolon getrennt. Das Makro erkennt dies anscheinend automatisch. Ich möchte aber explizit angeben können, was als Trennzeichen verwendet wird.
Viele Grüße
Pere
Sub CSVXLS()
Dim wb As Workbook
Dim strFile As String, strDir As String
strDir = "C:\test\"
strFile = Dir(strDir & "*.csv")
Do While strFile  ""
Set wb = Workbooks.Open(Filename:=strDir & strFile, Local:=True)
wb.SaveAs Replace(wb.FullName, ".csv", ".xlsx"), 51
wb.Close True
Set wb = Nothing
strFile = Dir
Loop
End Sub

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV in XLS Konvertieren
26.12.2013 19:55:08
fcs
Hallo Pere,
bei der Dateierweiterung CSV hast du keine Einstellmöglichkeiten für das Trennzeichen außer dass du den Paramter "Local" auf True (dann lokale Einstelungen aus der Systemsteuerung, deutsch z.B. Semikolon als Trennzeichen, Komma als Dezimaltrennzeichen) oder False (dann US-Einstellungen mit Komma als Trennzeichen und Punkt als Dezimalzeichen).
Wenn du das Trennzeichen variabel setzen möchtest, dann musst du deine CSV-Dateien in TXT-Dateien umbenennen/kopieren.
Nachfolgend dein Makro entsprechend erweitert und angepasst.
Weitere Infos zu OpenText findest du in der VBA-Hilfe.
Gruß
Franz
Sub CSVXLS_variabel()
Dim wb As Workbook
Dim strFile As String, strDir As String, strTXT_File As String
Dim bolTab As Boolean, bolSemicolon As Boolean, bolComma As Boolean, _
bolSpace As Boolean, bolOther As Boolean, strOther As String, strSep As String
strSep = InputBox("Bitte Trennzeichen eingeben (Für Tabulator: vbTab)", _
"Trennzeichen für CSV-Import", Default:="vbTab")
Select Case strSep
Case "" 'Abbruch
Exit Sub
Case "vbTab": bolTab = True
Case ";": bolSemicolon = True
Case ",": bolComma = True
Case " ": bolSpace = True
Case Else
bolOther = True
strOther = Left(strSep, 1)
End Select
strDir = "C:\test\"
strFile = Dir(strDir & "*.csv")
Do While strFile  ""
strTXT_File = strDir & strFile
strTXT_File = Replace(strTXT_File, ".csv", ".txt")
'CSV-Datei kopieren und in TXT umbenennen
VBA.FileCopy Source:=strDir & strFile, Destination:=strTXT_File
Workbooks.OpenText Filename:=strTXT_File, Tab:=bolTab, _
semicolon:=bolSemicolon, comma:=bolComma, Space:=bolSpace, _
other:=bolOther, otherChar:=strOther, Local:=True
Set wb = ActiveWorkbook
wb.SaveAs Replace(wb.FullName, ".txt", ".xlsx"), 51
wb.Close True
Set wb = Nothing
'TXT-Datei wieder löschen
Kill strTXT_File
strFile = Dir
Loop
End Sub

Anzeige
AW: CSV in XLS Konvertieren
26.12.2013 21:44:41
Pere
Hallo Franz,
herzlichen Dank für das Anpassen des Makros. Leider funktioniert es bei mir aber bei einer CSV-Datei mit ; als Trennzeichen nicht. Ich habe Dir die Datei angehängt. Sie ist allerdings als TXT-Datei angehängt, da ich keine CSV-Dateien hochladen kann. Du musst Sie also noch in eine CSV-Datei umwandeln, bevor Du das Makro testest. Ich weiß nicht, warum es nicht funktioniert. Habe ich vielleicht etwas übersehen?
Viele Grüße
Pere
Hier die Datei
https://www.herber.de/bbs/user/88630.txt

Anzeige
AW: CSV in XLS Konvertieren
26.12.2013 21:45:29
Pere
Hallo Franz,
herzlichen Dank für das Anpassen des Makros. Leider funktioniert es bei mir aber bei einer CSV-Datei mit ; als Trennzeichen nicht. Ich habe Dir die Datei angehängt. Sie ist allerdings als TXT-Datei angehängt, da ich keine CSV-Dateien hochladen kann. Du musst Sie also noch in eine CSV-Datei umwandeln, bevor Du das Makro testest. Ich weiß nicht, warum es nicht funktioniert. Habe ich vielleicht etwas übersehen?
Viele Grüße
Pere
Hier die Datei
https://www.herber.de/bbs/user/88630.txt

Anzeige
AW: CSV in XLS Konvertieren
27.12.2013 09:27:50
fcs
Hallo Pere,
da hatte ich noch etwas übersehen.
Excel erkennt nicht immer automatisch, ob eine Text-Datei mit Trennzeichen oder festen Spaltenbreiten vorliegt. Deshalb muss beim Öffnen zusätzlich der Parameter DataType angegben werden.
Passe die folgende Zeile an.
    Workbooks.OpenText Filename:=strTXT_File, DataType:=xlDelimited, _
Tab:=bolTab, semicolon:=bolSemicolon, comma:=bolComma, Space:=bolSpace, _
other:=bolOther, otherChar:=strOther, Local:=True

Gruß
Franz

Anzeige
AW: CSV in XLS Konvertieren
27.12.2013 19:13:03
Pere
Super, funktioniert einwandfrei! Herzlichen Dank, Franz! Gruß Pere
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
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 in XLS Konvertieren


Schritt-für-Schritt-Anleitung

Um eine CSV-Datei in Excel umzuwandeln, kannst du ein einfaches VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "Projekt" -> "Einfügen" -> "Modul".

  3. Kopiere den folgenden Code in das Modul:

    Sub CSVXLS_variabel()
        Dim wb As Workbook
        Dim strFile As String, strDir As String, strTXT_File As String
        Dim bolTab As Boolean, bolSemicolon As Boolean, bolComma As Boolean, _
        bolSpace As Boolean, bolOther As Boolean, strOther As String, strSep As String
        strSep = InputBox("Bitte Trennzeichen eingeben (Für Tabulator: vbTab)", _
        "Trennzeichen für CSV-Import", Default:="vbTab")
    
        Select Case strSep
            Case "" 'Abbruch
                Exit Sub
            Case "vbTab": bolTab = True
            Case ";": bolSemicolon = True
            Case ",": bolComma = True
            Case " ": bolSpace = True
            Case Else
                bolOther = True
                strOther = Left(strSep, 1)
        End Select
    
        strDir = "C:\test\"
        strFile = Dir(strDir & "*.csv")
        Do While strFile <> ""
            strTXT_File = strDir & strFile
            strTXT_File = Replace(strTXT_File, ".csv", ".txt")
            'CSV-Datei kopieren und in TXT umbenennen
            VBA.FileCopy Source:=strDir & strFile, Destination:=strTXT_File
            Workbooks.OpenText Filename:=strTXT_File, DataType:=xlDelimited, _
            Tab:=bolTab, semicolon:=bolSemicolon, comma:=bolComma, Space:=bolSpace, _
            other:=bolOther, otherChar:=strOther, Local:=True
            Set wb = ActiveWorkbook
            wb.SaveAs Replace(wb.FullName, ".txt", ".xlsx"), 51
            wb.Close True
            Set wb = Nothing
            'TXT-Datei wieder löschen
            Kill strTXT_File
            strFile = Dir
        Loop
    End Sub
  4. Passe den Verzeichnispfad an: Ändere strDir = "C:\test\" auf den Pfad deiner CSV-Dateien.

  5. Führe das Makro aus: Gehe zurück zu Excel und drücke ALT + F8, wähle das Makro aus und klicke auf „Ausführen“.


Häufige Fehler und Lösungen

  • Fehler beim Trennzeichen: Wenn das Makro nicht die erwarteten Daten importiert, stelle sicher, dass du das richtige Trennzeichen im InputBox-Feld eingibst.

  • Datei nicht gefunden: Überprüfe, ob sich die CSV-Datei im angegebenen Verzeichnis befindet und die Dateiendung korrekt ist.

  • Excel erkennt die Datei nicht: Wenn Excel die Datei nicht korrekt öffnet, füge den Parameter DataType:=xlDelimited hinzu:

    Workbooks.OpenText Filename:=strTXT_File, DataType:=xlDelimited, _
    ...

Alternative Methoden

Wenn du eine CSV-Datei in Excel umwandeln möchtest, ohne VBA zu verwenden, kannst du die folgenden Methoden ausprobieren:

  • Manuelles Öffnen: Öffne Excel, gehe auf "Daten" -> "Daten abrufen" -> "Aus Datei" -> "Aus Text/CSV". Wähle die CSV-Datei und gib das Trennzeichen an.

  • CSV-Datei umbenennen: Benenne die CSV-Datei in .txt um und öffne sie in Excel. Excel wird dich nach dem Trennzeichen fragen.


Praktische Beispiele

Angenommen, du hast eine CSV-Datei mit folgenden Inhalten:

Name;Alter;Stadt
Max;30;Berlin
Anna;28;München

Um diese Datei in Excel zu importieren, kannst du das oben beschriebene Makro verwenden und das Trennzeichen „;“ angeben. Wenn das Makro erfolgreich ausgeführt wird, wird eine Excel-Datei mit den entsprechenden Daten erstellt.


Tipps für Profis

  • Automatisierung: Du kannst das VBA-Makro so anpassen, dass es regelmäßig in einem bestimmten Intervall ausgeführt wird, um CSV-Dateien automatisch in Excel umzuwandeln.

  • Batch-Verarbeitung: Wenn du mehrere CSV-Dateien gleichzeitig umwandeln möchtest, achte darauf, dass alle Dateien im selben Verzeichnis liegen und benutze eine Schleife im VBA-Code.

  • Verwendung von Formeln: Nach der Umwandlung kannst du Formeln in Excel verwenden, um die Daten weiter zu bearbeiten.


FAQ: Häufige Fragen

1. Wie kann ich eine CSV-Datei automatisch in Excel umwandeln? Du kannst ein VBA-Makro verwenden, das die CSV-Datei in eine Excel-Datei konvertiert.

2. Was ist der Unterschied zwischen CSV und XLS? CSV (Comma-Separated Values) ist ein einfaches Textformat, während XLS (Excel-Datei) ein binäres Format ist, das mehr Funktionen und Formatierungen unterstützt.

3. Wie kann ich das Trennzeichen bei der Umwandlung anpassen? Im Makro kannst du das Trennzeichen über eine InputBox anpassen, bevor die Datei geöffnet wird.

4. Kann ich auch CSV-Dateien mit anderen Trennzeichen verwenden? Ja, du kannst das Trennzeichen entsprechend anpassen, indem du es in der InputBox angibst.

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