CSV-Datei mit UniCode Zeichen erzeugen

Dieses Beispiel zeigt, wie CSV-Dateien mit UniCode-Zeichen erzeugt werden können. Im Standardzeichensatz können in ASCII-Dateien, also auch in CSV-Dateien z. B. keine chinesischen Zeichen ausgegeben werden. Mit Hilfe des folgenden VBA-Codes können hingegen auch Zeichen ausserhalb des ASCII-Satzes, also auch Sonderzeichen ect. ausgeben. Mehr über den UniCode-Zeichensatz finden Sie hier bei Wikipedia.de.

Erfassen Sie den folgenden VBA-Code (drei Prozeduren) in einem neuen Code-Modul. Aufgerufen wird der Export über die erste Prozedur "UniCode_CSV_erzeugen". Im Beispiel wird die erzeugte UniCode CSV-Datei im gleichen Verzeichnis abgelegt, wie die Excel-Datei aus der die CSV-Datei erzeugt werden soll.

Die Ausgangsdatei enthält drei Spalten, in der dritten Spalte befinden sich chinesische Zeichen, die in die CSV-Datei übertragen werden sollen, siehe Abbildung:

VBA-Code zur Erzeugung von Unicode CSV-Dateien:

Sub UniCode_CSV_erzeugen()
'** Dimensionierung der Variablen
Dim strFile As Variant

'** Dateiname + Pfad festlegen
'strFile = Application.GetSaveAsFilename("Unicode_CSV-Datei.csv", "CSV-Dateien,*.csv,Alle Dateien,*.*")
strFile = ThisWorkbook.Path & "\Unicode-CSV-Datei.csv"

'** Beenden, wenn kein Dateiname vorhanden ist
If strFile = False Then Exit Sub

'** Speicher-Prozedur aufrufen
Code_CSV_speichern (strFile)
End Sub

Sub Code_CSV_speichern(strFile As String)
'** Dimensionierung der Variablen
Dim filenr, a, b, lngAnzSp As Integer
Dim strData As String '** CSV-Datenzeile

'** Vorgaben definieren
filenr = FreeFile
lngAnzSp = ThisWorkbook.Sheets("Daten").Cells.SpecialCells(xlCellTypeLastCell).Column

'** Datei öffnen
Open strFile For Output As #filenr

'** Daten in CSV-Datei schreiben
Print #filenr, Chr(255); Chr(254);
For a = 1 To ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
  strData = ""
  For b = 1 To lngAnzSp - 1
     strData = strData & Cells(a, b).Text & ";"
  Next b
  strData = strData & Cells(a, b).Text & vbCrLf
  Print #filenr, GetUniCodeString(strData);
Next a

'** Datei schließen
Close #filenr
End Sub

Private Function GetUniCodeString(s As String) As String
'** Dimensionierung der Variablen
Dim a As Integer  ' Zähler über die einzelnen Bytes des Unicode-Strings

'** Umwanden in Unicode-Zeichen
GetUniCodeString = ""
For a = 1 To LenB(s)
   GetUniCodeString = GetUniCodeString & Chr(AscB(MidB(s, a, 1)))
Next

End Function


Die Beispieldatei können Sie über den folgenden Link herunterladen:

Partnerlinks

Relevante Artikel

Ihre Zufriedenheit ist unser Ziel, deshalb verwenden wir Cookies. Mit diesen ermöglichen wir, dass unsere Webseite zuverlässig und sicher läuft, wir die Performance im Blick behalten und Sie besser ansprechen können. Cookies werden benötigt, damit technisch alles funktioniert und Sie auch externe Inhalte lesen können. Des Weiteren sammeln wir unter anderem Daten über aufgerufene Seiten, getätigte Käufe oder geklickte Buttons, um so unser Angebot an Sie zu Verbessern. Mehr über unsere verwendeten Dienste erfahren Sie unter „Weitere Informationen“. Mit Klick auf „Akzeptieren“ erklären Sie sich mit der Verwendung dieser Dienste einverstanden. Ihre Einwilligung können Sie jederzeit mit Wirkung auf die Zukunft widerrufen oder ändern.