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

Forumthread: Unicode Kyrillisch mit VBA bearbeiten

Unicode Kyrillisch mit VBA bearbeiten
Otto
Hallo Guten Tag,
Meine Testumgebung: Excel 2003 SP2, Multilingual unter Windows XP SP-2
Ich scheitere zur Zeit an kyrillischen Buchstaben
konkret möchte ich eine Textdatei erstellen, deren Name aus kyrillischen Zeichen besteht und deren Inhalt auch zum Teil aus kyrillischen Zeichen besteht.
Als Testbeispiel habe ich in A1 von "Tabelle1" den Text "Приемни" geschrieben. Nun versuche ich über VBA eine Datei dieses Namens zu erzeugen. Das klappt bei mir nicht.
Hier seht ihr meinen Versuch:
Die Function GetUniCodeString habe ich mir von Bernd bei
http://www.excel-center.de/foren/read.php?2,16535,16541#msg-16541
besorgt. Den Hinweis darauf fand ich hier:
https://www.herber.de/forum/archiv/604to608/t607292.htm
Kann mir bitte jemand die Scheuklappen von den Augen reißen?
Gruß Otto
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Unicode Kyrillisch mit VBA bearbeiten
24.07.2009 09:32:50
bst
Morgen Otto,
keine Ahnung ob es mit VBA überhaupt möglich ist kyrillische Zeichen in den Dateinamen zu bekommen.
Was schon geht ist es eine Unicodedatei mit kyrillischen Zeichen zu erzeugen.
Du musst dazu:
a) Die BOM an den Anfang der Datei schreiben, siehe: http://de.wikipedia.org/wiki/Byte_Order_Mark
b) den ganzen Text inklusive aller Leerzeichen, Absatzmarken, ... mit GetUniCodeString umkodieren, nicht nur die kyrillischen Zeichen selber!
HTH, Bernd
--
Option Explicit

Sub Kyrill()
    Dim strPath As String, strText As String
    
    strPath = "E:\temp\test.txt"
    strText = Worksheets("Tabelle1").Range("A1")
    
    Open strPath For Output As #1
    Print #1, Chr(255); Chr(254); ' die BOM schreiben, Achtung da muss ein ; ans Ende !
    Print #1, GetUniCodeString(strText); ' den Text umkodieren und schreiben, auch hier muss ein ! ans Ende
    Close 1
    Shell "notepad " & strPath, vbMaximizedFocus
End Sub

Function GetUniCodeString(s As String) As String
    Dim i As Integer ' Zähler über die einzelnen Bytes des Unicode-Strings
    
    GetUniCodeString = ""
    For i = 1 To LenB(s)
        GetUniCodeString = GetUniCodeString & Chr(AscB(MidB(s, i, 1)))
    Next
End Function


Anzeige
AW: Unicode Kyrillische Dateinamen mit VBA
24.07.2009 12:02:22
Otto
Hallo Bernd,
vielen Dank für Deine Unicode-Aufklärung mit BOM! Und zusätzlichen Dank für die Anmerkung zum Semikolon am Ende des Print.
Das Schreiben von kyrillischem Text klappt jetzt wunderbar.
Da ich aber mit dem Explorer kyrillische Dateinamen erzeugen kann und auch Russen oder Bulgarinnen sicher ihre Dateien im kyrillischen Zeichensatz benamsen, gehe ich davon aus, dass es dafür auch eine Lösung gibt.
Vielleicht mir hier noch jemand auf die Sprünge helfen!
Danke!
Otto
Anzeige
AW: Unicode Kyrillisch mit VBA bearbeiten
24.07.2009 17:31:27
Anton
Hallo Otto,
probiers so:

Sub b()
  Set fso = CreateObject("Scripting.FileSystemObject")  
  Set MeineDatei = fso.CreateTextFile("D:\temp\" & Range("A1") & ".txt", True, True)  
  For i = 1 To 5  
    MeineDatei.WriteLine Range("A1")
  Next
  MeineDatei.Close
  Set fso = Nothing  
  Shell "notepad " & "D:\temp\" & Range("A1") & ".txt", vbMaximizedFocus
End Sub  

mfg Anton
Anzeige
AW: Unicode Kyrillisch mit VBA bearbeiten
24.07.2009 18:27:22
Otto
Hallo Anton,,
Wunderbar! so hab ich mir das vorgestellt! ohne viele Schnörkel!
Es geht sogar mit Stringvariablen!
Als Testbeispiel habe ich in A1 von "Tabelle1" den Text "Приемни" geschrieben. Nun versuche ich über VBA eine Datei dieses Namens zu erzeugen. Das klappt!

Gruß Otto
Anzeige
AW: Unicode Kyrillisch mit VBA bearbeiten
24.07.2009 22:37:46
bst
Abend Anton,
Sehr schöne Lösung.
cu, Bernd
;

Forumthreads zu verwandten Themen

Anzeige
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

Kyrillische Zeichen in Excel mit VBA bearbeiten


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und erstelle ein neues Arbeitsblatt.

  2. Schreibe den gewünschten kyrillischen Text in die Zelle A1, z. B. "Приемни".

  3. Öffne den VBA-Editor mit ALT + F11.

  4. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject" > Einfügen > Modul.

  5. Kopiere den folgenden Code in das Modul:

    Option Explicit
    
    Sub Kyrill()
        Dim strPath As String, strText As String
        strPath = "E:\temp\test.txt" ' Pfad zur Datei
        strText = Worksheets("Tabelle1").Range("A1") ' Text aus Zelle A1
    
        Open strPath For Output As #1
        Print #1, Chr(255); Chr(254); ' BOM schreiben
        Print #1, GetUniCodeString(strText); ' Text umkodieren und schreiben
        Close #1
        Shell "notepad " & strPath, vbMaximizedFocus ' Datei im Notepad öffnen
    End Sub
    
    Function GetUniCodeString(s As String) As String
        Dim i As Integer
        GetUniCodeString = ""
        For i = 1 To LenB(s)
            GetUniCodeString = GetUniCodeString & Chr(AscB(MidB(s, i, 1)))
        Next
    End Function
  6. Führe das Makro aus: Klicke im VBA-Editor auf F5 oder gehe zurück zu Excel und führe das Makro über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  • Excel zeigt komische Zeichen statt Buchstaben an: Stelle sicher, dass die Datei mit der richtigen Kodierung (UTF-16) gespeichert wird. Achte darauf, die BOM (Byte Order Mark) am Anfang der Datei zu schreiben.

  • Dateiname mit kyrillischen Zeichen funktioniert nicht: Verwende die CreateTextFile-Methode von Scripting.FileSystemObject für die Erstellung der Datei. Siehe den alternativen Code im nächsten Abschnitt.


Alternative Methoden

Eine Alternative zur vorherigen Methode ist die Verwendung von FileSystemObject, um eine Textdatei zu erstellen. Hier ist ein Beispiel:

Sub ErstelleKyrillischeDatei()
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")

    Dim MeineDatei As Object
    Set MeineDatei = fso.CreateTextFile("D:\temp\" & Range("A1") & ".txt", True, True)

    Dim i As Integer
    For i = 1 To 5
        MeineDatei.WriteLine Range("A1")
    Next
    MeineDatei.Close
    Set fso = Nothing

    Shell "notepad " & "D:\temp\" & Range("A1") & ".txt", vbMaximizedFocus
End Sub

Diese Methode funktioniert ebenfalls gut und ist einfach zu implementieren.


Praktische Beispiele

Wenn Du den Code in Excel erfolgreich implementierst, kannst Du verschiedene kyrillische Texte testen, um sicherzustellen, dass sie korrekt in die Textdatei geschrieben werden. Probiere es mit Namen, Städten oder beliebten Wörtern im kyrillischen Alphabet.

Beispiel: In Zelle A1 den Text "Москва" einfügen und das Makro ausführen. Die Textdatei sollte den korrekten Namen ohne Probleme speichern.


Tipps für Profis

  • Achte darauf, dass der Pfad zur Datei existiert, bevor Du das Makro ausführst, um Fehler zu vermeiden.
  • Nutze die Debug.Print-Anweisung, um den Inhalt von Variablen während der Ausführung zu überprüfen.
  • Wenn Du regelmäßig mit kyrillischen Zeichen arbeitest, speichere die Makros in der persönlichen Makroarbeitsmappe, sodass Du sie in jedem neuen Excel-Dokument nutzen kannst.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die kyrillischen Zeichen korrekt angezeigt werden?
Stelle sicher, dass die Datei im UTF-16 Format gespeichert wird und dass die richtige BOM am Anfang der Datei steht.

2. Kann ich auch andere Unicode-Zeichen verwenden?
Ja, die gleiche Methodik kann für andere Unicode-Zeichen angewendet werden, indem Du den Text entsprechend anpasst.

3. Gibt es eine Möglichkeit, direkt in Excel mit kyrillischen Zeichen zu arbeiten?
Ja, Du kannst kyrillische Zeichen direkt in Zellen eingeben und mit den üblichen Excel-Funktionen arbeiten, solange die Schriftart dies unterstützt.

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