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

Forumthread: Unicode Zeichen verarbeiten

Unicode Zeichen verarbeiten
18.04.2018 17:39:50
Jens
Hallo zusammen,
Ich will Tabellen die Unicode Zeichen enthalten in eine Unicode konforme Textdatei exportieren. Dazu habe ich mir ein VBA Makro geschrieben, dass mehrere Spalten untereinander weg in eine Datei schreiben soll. Da die fremdländischen Buchstaben zunächst als Fragezeichen auftauchten habe ich etwas herum experimentiert.
Zunächst habe ich diesen Ansatz hier probiert:
https://stackoverflow.com/questions/30933062/how-to-save-txt-as-unicode-or-utf-8-in-vba
Der hat aber nicht funktioniert bei mir.
Als nächstes habe ich diesen Ansatz probiert:
https://stackoverflow.com/questions/14261632/how-can-i-create-text-files-with-special-characters-in-their-filenames
Leider ist mein VBA nicht gut genug, dass das Ergebnis korrekt ist.
Hier sind die Daten mit denen ich arbeite. Die Tabelle enthält sehr viele verschiedene Sprachen und damit auch Zeichen aus anderen Sprachen. So wie sie hier auf der Webseite dargestellt sind erscheinen sie auch in meinem Excel file. Jedoch nicht mehr nach dem Export in eine .txt Datei.
https://cloud.google.com/speech-to-text/docs/languages
Hier ist der VBA Code welcher kein richtiges Ergebnis ausschreibt:
Sub Create_New_Text_File_from_all_Columns()
'Variablen definieren
Dim strCRLF As String, strSpecialchars As String
Dim oFSO As Object, oFile As Object
Dim Cr As Long, Cc As Integer, CrE As Long, CcE As Integer
Dim i As Long, n As Long, y As Long
Dim CHeader As String, ExPfad As String, Exfile As String
'Exportpfad mit Backslash am Schluss definieren !!
ExPfad = "C:\Users\Me\"
Cr = 65536
'Schliessen einer evetnuell noch geöffneten Datei
Close #1
'Letzte Spalte bestimmen
If Cells(4, 500) = "" Then
CrE = Cells(4, 500).End(xlToLeft).Column
End If
'1. Öffnen der Datei
'Den Namen und Pfad bitte anpassen
Exfile = ExPfad & Cells(1, 1)
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFile = oFSO.CreateTextFile(Exfile, , True)
'With FSO For Output As #1
'Beginn der Export Schleife
For i = 7 To CrE - 1 Step 2
If Cells(Cr, i) = "" Then
Cr = Cells(Cr, i).End(xlUp).Row
End If
'Beginn des Datenexports in die Textdatei
For n = 4 To Cr
'Write oder Print verwenden
strCRLF = StrConv(vbCrLf, vbUnicode)
'strSpecialchars = StrConv(Cells(n, i), vbUnicode)
oFile.Write Cells(n, i) & strCRLF
Next n
Cr = 65536
Next i
'Schliessen der Datei weil Dateiende erreicht wurde
oFile.Close
Set oFile = Nothing
Set oFSO = Nothing
MsgBox "Textdatei wurde in " & ExPfad & " erstellt"
End Sub
Freue mich sehr über Hilfe.
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Unicode Zeichen verarbeiten
19.04.2018 09:24:13
Robert
Hallo Jens,
ganz habe ich in Deinen Code nicht erkannt, was Du da aus der Exceldatei speichern möchtest. Mit
ActiveWorkbook.SaveAs Filename:= "D:\Test\Mappe1.txt", FileFormat:=xlUnicodeText

kannst Du aber die aktuelle Excel-Tabelle (komplett) als Unicode-Txt-Datei speichern.
Vielleicht hilft es ja.
Gruß
Robert
Anzeige
AW: Unicode Zeichen verarbeiten
19.04.2018 12:11:18
Jens
Hallo Robert,
vielen Dank für die Antwort. Leider passt die Antwort nicht wirklich zu meinem Problem. Dieses ist leider noch größer als ich zunächst gedacht hatte. Insgesamt sollen sich aus dieser Excel Mappe 7518 einzelne Dateien ergeben. Alle mit der richtigen Formatierung (Unicode - mittlerweile denke ich UTF-8 geht vermutlich auch) und jeweils nur ein Teil der Excel Mappe ist in jeder txt Datei gespeichert.
In welcher Datei welche Daten gespeichert werden sollen ist nicht das Problem. Nach meinem jetzigen Wissensstand ist nur die Formatierung ein Problem.
Hat jemand noch eine andere Idee?
Vielen herzlichen Dank für jegliche Hilfe.
Anzeige
AW: Unicode Zeichen verarbeiten
19.04.2018 14:01:13
Robert
Hallo Jens,
ich habe mal etwas recherchiert. Mit Hilfe der Seite
https://stackoverflow.com/questions/2524703/save-text-file-utf-8-encoded-with-vba
kommst Du vielleicht weiter.
Ich habe mal, um Beispieldaten zu haben, die Tabelle auf der von Dir erwähnten Seite https://cloud.google.com/speech-to-text/docs/languages in eine Exceltabelle kopiert. Mit nachstehendem Code fasse ich die erste Spalte dieser Tabelle mit den Unicode-Zeichen zusammen und speichere sie als UTF8-Textdatei. Der Inhalt der Variablen SFileContent kannst Du natürlich ganz nach Bedarf zusammenstellen.
Sub Erstelle_UTF8()
Dim fsT As Object
Set fsT = CreateObject("ADODB.Stream")
Dim sFileName As String
Dim sFileContent As String
Dim i As Integer
sFileName = ThisWorkbook.Path & "\UTF8Txt.txt"
For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
sFileContent = sFileContent & vbCrLf & Cells(i, 1)
Next
fsT.Type = 2 'Specify stream type - we want To save text/string data.
fsT.Charset = "utf-8" 'Specify charset For the source text data.
fsT.Open 'Open the stream And write binary data To the object
fsT.WriteText sFileContent '"special characters: äöüß"
fsT.SaveToFile sFileName, 2 'Save binary data To disk
Set fsT = Nothing
End Sub
Gruß
Robert
Anzeige
AW: Unicode Zeichen verarbeiten
19.04.2018 16:32:23
Jens
Hallo Robert,
Vielen herzlichen Dank dafür! Das werde ich jetzt mal ausprobieren.
Bei dir muss irgendetwas anders (besser/richtiger) sein als bei mir im Code wenn deine Version funktioniert.
Ich kann dir hoffentlich schon morgen Rückmeldung geben ob das geklappt hat.
viele Grüße,
Jens
Anzeige
AW: Unicode Zeichen verarbeiten
20.04.2018 13:38:02
Jens
Hallo Robert,
jetzt habe ich es hin bekommen. Vielen herzlichen Dank.
Ich habe einfach dein Makro als Vorlage benutzt und meine benötigte logik hineingearbeitet.
SUPER!
Viele Grüße
Jens
Freut mich, wenn ich helfen konnte. owT
20.04.2018 19:28:16
Robert
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Unicode Zeichen in Excel verarbeiten


Schritt-für-Schritt-Anleitung

Um Unicode-Zeichen in Excel zu verarbeiten und diese in eine Textdatei zu exportieren, kannst du das folgende VBA-Makro verwenden. Dieses Beispiel zeigt, wie du eine .txt-Datei im UTF-8 Format erstellst.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu (Einfügen > Modul).
  3. Kopiere den folgenden Code in das Modul:
Sub Create_UTF8_Text_File()
    Dim fsT As Object
    Set fsT = CreateObject("ADODB.Stream")
    Dim sFileName As String
    Dim sFileContent As String
    Dim i As Integer

    sFileName = ThisWorkbook.Path & "\OutputFile.txt"

    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        sFileContent = sFileContent & Cells(i, 1).Value & vbCrLf
    Next i

    fsT.Type = 2 'Specify stream type for text/string data
    fsT.Charset = "utf-8" 'Specify charset for the source text data
    fsT.Open 'Open the stream and write binary data to the object
    fsT.WriteText sFileContent
    fsT.SaveToFile sFileName, 2 'Save binary data to disk
    fsT.Close

    MsgBox "Textdatei wurde erstellt: " & sFileName
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus (ALT + F8 und wähle Create_UTF8_Text_File aus).

Häufige Fehler und Lösungen

  • Fragezeichen anstelle von Unicode-Zeichen: Wenn du beim Export Fragezeichen siehst, stelle sicher, dass du die Datei im UTF-8 Format speicherst. Verwende dazu den ADODB.Stream, wie im obigen Beispiel gezeigt.

  • Datei wird nicht erstellt: Überprüfe, ob der angegebene Pfad korrekt ist und ob du Schreibrechte für diesen Ordner hast.


Alternative Methoden

Eine Alternative zum Exportieren von Unicode-Zeichen ist die Verwendung der SaveAs Methode in Excel. Zum Beispiel:

ActiveWorkbook.SaveAs Filename:="C:\Users\Me\Mappe1.txt", FileFormat:=xlUnicodeText

Beachte, dass dieser Befehl die gesamte Arbeitsmappe als Unicode-Textdatei speichert, was nicht für den Export einzelner Spalten geeignet ist.


Praktische Beispiele

Hier ist ein Beispiel, wie du spezifische Unicode-Zeichen in Excel eingeben und exportieren kannst:

  1. Gebe in Zelle A1 den String "Hällo Wörld" ein.
  2. Führe das oben genannte Makro aus, um den Inhalt in eine UTF-8 Textdatei zu exportieren.
  3. Überprüfe die erstellte Datei, um sicherzustellen, dass die Zeichen korrekt sind.

Tipps für Profis

  • Verwende die StrConv Funktion, um Strings in Unicode zu konvertieren, bevor du sie schreibst.
  • Experimentiere mit dem FileSystemObject, um verschiedene Dateiformate zu erstellen und zu verwalten.
  • Halte deine Excel-Version und VBA-Referenzen auf dem neuesten Stand, um Komplikationen zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich Unicode-Zeichen in Excel eingeben?
Du kannst Unicode-Zeichen direkt in Excel eingeben, indem du die Alt-Taste gedrückt hältst und die entsprechende Unicode-Nummer mit dem Ziffernblock eingibst.

2. Was ist der Unterschied zwischen UTF-8 und Unicode?
UTF-8 ist eine Codierungsmethode, die Unicode-Zeichen in variabler Länge speichert. Unicode selbst ist ein Standard, der jedem Zeichen eine eindeutige Nummer zuweist.

3. Wie speichere ich eine Excel-Datei mit einem spezifischen Zeichensatz?
Du kannst die SaveAs Methode verwenden und den gewünschten FileFormat angeben, um sicherzustellen, dass die Datei im gewünschten Format gespeichert wird, z.B. als xlUnicodeText.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige