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

Forumthread: Unicode bearbeiten mit VBA

Unicode bearbeiten mit VBA
03.05.2005 23:29:34
Frank
Hallo, ich habe Probleme beim Verarbeiten von Unicode mit VBA
Ich habe Texte, die in Excel-Tabellen im Unicode vorliegen
(diverse Spalten in Kyrillisch oder chinesisch ..)
Diese Texte werden in Excel-Tabellen gepflegt
und müssen für andere Systeme als Unicode in einer Datei übergeben werden.
Jeglicher erforderliche Code muss sich in der Arbeitsmappe befinden
oder Teil eines normalen Windows-Betriebssystems sein,
keine ADD-Ins etc.
Mein Problem: Bei der Verarbeitung von Unicode mit VBA wie
s1=trim(cells(x,y)) oder
s1="nix " &cells(x,y)
wird jedes Unicode-Zeichen in "?" AUSGETAUSCHT
Wie kann ich in VBA abfragen, dass es sich um Unicode handelt?
Kann ich Unicode auch in einen Dateityp *.txt schreiben oder
konvertiert Excel im Hintergrund wieder alles in ASCII (8bit)?
Wo kann ich zum Thema Verarbeitung von Unicode mit VBA gute Infos bekommen?
Wer weiss Rat?
Danke
Frank
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Unicode bearbeiten mit VBA
03.05.2005 23:38:53
Hubert
Hi, vielleicht hilft es:
Installieren der universalen Schriftart für Unicode
Die Schriftart Arial Unicode MS ist eine reine Unicode-Schriftart. Sie enthält alle im Unicode 2.1-Standard definierten Zeichen, Ideogramme und Symbole.
In Microsoft Windows 2000 oder Windows Millennium Edition
Beenden Sie alle Programme.
Doppelklicken Sie in der Systemsteuerung auf das Symbol Software.
Führen Sie eine der folgenden Aktionen aus:
Wenn Sie Ihr Microsoft Office-Programm als Teil eines Office-Pakets installiert haben, klicken Sie im Feld Zurzeit installierte Programme auf Microsoft Office und dann auf die Schaltfläche Ändern.
Wenn Sie Ihr Office-Programm einzeln installiert haben, klicken Sie im Feld Zurzeit installierte Programme auf den Namen Ihres Programms und dann auf die Schaltfläche Ändern.
Klicken Sie im Dialogfeld Microsoft Office-Setup auf Features hinzufügen oder entfernen und anschließend auf Weiter.
Klicken Sie auf das Pluszeichen (+) neben Gemeinsam genutzte Office-Features.
Klicken Sie auf das Pluszeichen (+) neben Internationale Unterstützung.
Klicken Sie auf das Symbol neben Universale Schriftart, und wählen Sie die gewünschte Installationsoption aus.
In Microsoft Windows 98 oder Windows NT 4.0
Beenden Sie alle Programme.
Doppelklicken Sie in der Systemsteuerung auf das Symbol Software.
Führen Sie eine der folgenden Aktionen aus:
Wenn Sie Ihr Office-Programm als Teil eines Office-Pakets installiert haben, klicken Sie auf der Registerkarte Installieren/Deinstallieren auf Microsoft Office und dann auf Hinzufügen/Entfernen.
Falls Sie das Office-Programm einzeln installiert haben, klicken Sie auf der Registerkarte Installieren/Deinstallieren auf den Namen des Programms und dann auf Hinzufügen/Entfernen.
Klicken Sie im Dialogfeld Microsoft Office-Setup auf Features hinzufügen oder entfernen und anschließend auf Weiter.
Klicken Sie auf das Pluszeichen (+) neben Gemeinsam genutzte Office-Features.
Klicken Sie auf das Pluszeichen (+) neben Internationale Unterstützung.
Klicken Sie auf das Symbol neben Universale Schriftart, und wählen Sie die gewünschte Installationsoption aus.
Anmerkung Auf Grund ihrer beträchtlichen Größe und der typographischen Kompromisse, die für eine solche Schriftart eingegangen werden müssen, sollten Sie Arial Unicode MS jedoch nur verwenden, wenn keine Möglichkeit besteht, mehrere Schriften für unterschiedliche Schriftsysteme zu verwenden. Wenn Sie beispielsweise in Microsoft Access mehrsprachige Daten aus unterschiedlichen Schriftsystemen verarbeiten, können Sie Arial Unicode MS als Schriftart für die Anzeige der Datentabellen verwenden, da in Access nicht viele unterschiedliche Schriftarten dargestellt werden können.
Anzeige
AW: Unicode bearbeiten mit VBA
04.05.2005 00:03:23
Luc:-?
Hallo Frank,
tja, ich weiß ja nicht wie du dein Problem mit "normalen" Mitteln lösen willst (falls das Verfahren im anderen Vorschlag nicht ausreicht). Als ich auf dieses Problem stieß, habe ich 3 nutzerdefinierte Funktionen (udF) geschrieben, die ich z.B. in einer Tabelle zur Darstellung von Fonts und ihren Subsets (im Unicode-Wertebereich) benutze. Mit speziellen "Lupen" kann ich auf dieser Tabelle einzelne Zeichen vergrößert darstellen, ihren Code auf verschiedene Weise angeben und in der bzw. mit der Lupe (ein Formobjekt) kopieren und im letzteren Fall mit Hilfe einer UserForm auch direkt das Ziel des Zeichentransports angeben. Wenn du an den Funktionen interessiert bist - sie könnten ja auch in Modulen deines Projektes notiert wdn -, melde dich noch mal.
Gruß Luc :-?
Anzeige
AW: Unicode bearbeiten mit VBA
04.05.2005 08:57:10
Frank
Danke für die Antworten,
nur mein Problem ist nicht die Eingabe oder Anzeige in Excel
- Ariel Universal wird bereits benutzt, die Anzeige ist korrekt
- ich kann die Texte zwar nicht lesen,
die Eingaben erfolgen durch russische oder chinesiche Kollegen
mit entsprechender Tastatur
Das Problem ist die Verarbeitung von Unicode mit VBA.
Den einzigen Befehl, den ich für 16-Bit Zeichensätze gefunden habe ist ASCW()
Alle anderen (probierten) Stringverarbeitungen mit VBA ergeben nur "?" für jedes Unicode-Zeichen.
Ich habe meistens ca. 1000 Zeilen,
- deren Inhalt per VBA geprüft (Länge, nicht erlaubte Zeichen, ...)
- die Texte einzelner Zellen werden neu zusammengestellt und ergänzt
- die neu zusammengestellten Texte werden zeilenweise in eine Datei geschrieben
- diese Datei wird zur Eingabe von mehrsprachigen Kommentaren
in programmierbaren Steuerungen sowie Störmeldesystemen benötigt
Die Excel-Tabellen mit den Zusätzen zur Prüfung und Erzeugung der (Text)-Dateien sollen ohne Zusatzinstallationen funktioniern - auch wenn's in VBA etwas umständlich werden sollte.
Frank
Anzeige
AW: Unicode bearbeiten mit VBA
04.05.2005 09:46:32
bst
Nochmals Hallo,
IMHO täuscht Du Dich da.
Unicodezeichen sind wohl weder im VBA-Debugfenster noch via MsgBox korrekt darstellbar.
Trotzdem funktionieren die meisten (alle?) String-Funktionen. s.u.
Schau Dir auch mal die VBA-Hilfe zu ASC/ASCB/ASCW, CHR/CHRB/CHRW sowie LEN/LENB an.
Warum es kein LENW gibt wissen wohl nur die M$-Götter ;-)
cu, Bernd
--
Option Explicit

Sub Bla()
Dim s As String, ch As String
Dim i As Integer
s = " Hallo " & ChrW(2333) & ChrW(2334) & "_" & ChrW(8304) & ChrW(8309) & " "
Cells(1, 1).Value = s
Cells(1, 2).Value = Mid(s, 8, 2)
Cells(1, 3).Value = Trim(s)
Cells(1, 4).Value = Replace(s, "Hallo", "ByeBye")
With Range("A1:D1").Font
.Name = "@Arial Unicode MS"
.Size = 16
End With
End Sub

Anzeige
AW: Unicode bearbeiten mit VBA
04.05.2005 08:48:51
bst
Morgen,
hier eine Funktion welche ein Tabellenblatt in eine CSV-Datei schreibt. Kodiert wird hierbei mit UTF-16 LE (Little Endian) welches Notepad schlicht 'Unicode' nennt.
http://www.excel-center.de/foren/read.php?2,16535,16548#msg-16548
HTH, Bernd
Anzeige
Vielen Dank, muss erst mal weiterüben
04.05.2005 13:02:30
Frank
Danke für die prompten Tipps.
Auf Anhieb ging's natürlich erst mal nicht.
Im Augenblick habe ich zuviel Anderes um die Ohren.
Morgen habe ich mehr Zeit zum Testen.
Aber nicht vergessen: morgen ist ein Feiertag,
also raus an die frische Luft!
Tschüss Frank
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Unicode bearbeiten mit VBA


Schritt-für-Schritt-Anleitung

  1. Installation der Schriftart: Stelle sicher, dass die Schriftart Arial Unicode MS installiert ist. Diese Schriftart unterstützt eine Vielzahl von Unicode-Zeichen. Du kannst sie über die Systemsteuerung von Windows installieren, indem du zum Abschnitt „Gemeinsam genutzte Office-Features“ navigierst.

  2. VBA-Setup: Öffne den VBA-Editor in Excel (ALT + F11). Füge ein neues Modul hinzu, um deinen Code zu schreiben.

  3. Unicode-Zeichen einfügen: Du kannst Unicode-Zeichen in VBA mit ChrW() einfügen. Hier ein Beispiel:

    Dim unicodeChar As String
    unicodeChar = ChrW(2333) ' Beispiel für ein Unicode-Zeichen
  4. Verarbeitung von Unicode: Nutze die Funktionen ASCW, LEN, MID und REPLACE, um mit Unicode-Zeichen zu arbeiten. Beispiel:

    Dim s As String
    s = "Hallo " & ChrW(2333)
    Cells(1, 1).Value = s
  5. Export der Daten: Um die Daten als Unicode in eine TXT-Datei zu exportieren, kannst du das folgende Beispiel verwenden:

    Open "C:\deineDatei.txt" For Output As #1
    Print #1, Cells(1, 1).Value
    Close #1

Häufige Fehler und Lösungen

  • Frage: Warum werden Unicode-Zeichen als "?" angezeigt?
    Antwort: Dies passiert häufig, wenn die Schriftart nicht korrekt eingestellt ist oder die Zeichen nicht in Unicode verarbeitet werden. Stelle sicher, dass du die Schriftart Arial Unicode MS verwendest.

  • Frage: Kann ich Unicode in eine CSV-Datei exportieren?
    Antwort: Ja, verwende UTF-16 LE beim Schreiben in die Datei. Dies kann über den Open Befehl in VBA realisiert werden.


Alternative Methoden

  • Verwenden von User-Defined Functions (UDF): Du kannst benutzerdefinierte Funktionen in VBA erstellen, um spezielle Anforderungen zu erfüllen, wie das Einfügen von Unicode-Zeichen.
  • Die Verwendung von Formobjekten: Mit Formobjekten wie Lupe Unicode kannst du Zeichencodes besser handhaben und darstellen.

Praktische Beispiele

  1. Zeichen in Zellen darstellen:

    Sub UnicodeBeispiel()
       Dim unicodeString As String
       unicodeString = "Beispiel: " & ChrW(2334)
       Cells(1, 1).Value = unicodeString
    End Sub
  2. Zeichen zählen:

    Sub UnicodeZeichenZaehlen()
       Dim s As String
       s = "Hallo " & ChrW(2333)
       MsgBox "Anzahl der Zeichen: " & Len(s)
    End Sub

Tipps für Profis

  • Nutze die Funktion VBA.Unichar für spezifische Unicode-Zeichen. Diese Funktion kann dir helfen, die Zeichen einfacher zu handhaben.
  • Achte darauf, dass du beim Arbeiten mit mehrsprachigen Daten immer die korrekte Kodierung verwendest, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich Unicode in Excel eingeben?
Du kannst Unicode-Zeichen in Excel eingeben, indem du ALT gedrückt hältst und die entsprechende Zahl auf dem Nummernblock eingibst.

2. Was ist der Unterschied zwischen ASCII und Unicode?
ASCII ist eine 7-Bit-Kodierung, die nur 128 Zeichen unterstützt, während Unicode eine viel größere Zeichenanzahl (über 143.000) unterstützt, um alle Schriftzeichen und Symbole darzustellen.

3. Wie kann ich sicherstellen, dass meine Excel-Datei Unicode unterstützt?
Verwende die richtige Schriftart (z.B. Arial Unicode MS) und speichere die Datei im UTF-16-Format, um sicherzustellen, dass alle Unicode-Zeichen korrekt angezeigt werden.

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