Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1864to1868
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Deutsche Umlaute

Deutsche Umlaute
06.01.2022 09:49:11
Gert
Ich habe eine Excel-VBA-Anwendung für eine Bekannte entwickelt, die sich in Brasilien aufhält. In VBA machen beim Kommando MsgBox die deutschen Umlaute Probleme. Die Messagebox "Änderung ausgeführt" wird bei mir (Version 16.0) und auch in Brasilien (Excel für Mac Version 16.56) noch richtig dargestellt. Aber wenn die Datei für weitere Anpasungen zurück kommt, haben alle Umlaute einen falschen Keycode. In erster Instanz habe ich die Umlaute im Sinne von Ä => Ae ... ersetzt. Wohler wäre es mir, wenn die Umlaute genau so zurück kämen, wie sie hinaus gegangen sind.
Die folgende auf das Wesentliche beschränkte Prozedur zeigt die Veränderung. Aus "ÄÖÜäöüß" wird "€…†ŠšŸ§". Es ist unklar, wann genau zwischen Brasilien und Deutschland und warum die Veränderung vor sich geht und welcher Codepage die falsche Codierung entspricht. Helfen würde mir u.a. eine Info, wie ich die zu den falschen Zeichen gehörige Codepage ermitteln kann. Und natürlich wie ich in VBA global eine richtige Codierung für beliebige Zeichenketten-Variablen erzeugen kann.

Sub UmlConv()
Dim Umlaute As String
Dim Ergebnis As String
Dim i As Long
Dim x() As Byte
Debug.Print "Deutsche Umlaute"
Umlaute = "ÄÖÜäöüß"
Ergebnis = ""
x = StrConv(Umlaute, vbFromUnicode)    ' Convert string.
For i = 0 To UBound(x)
Debug.Print x(i)
Ergebnis = Ergebnis & Chr(x(i))
Next
Debug.Print Ergebnis    'Ergibt wieder ÄÖÜäöüß
Debug.Print ""
Debug.Print "Umlaute mit geänderten Keycodes"
Umlaute = "€…†ŠšŸ§"
Ergebnis = ""
x = StrConv(Umlaute, vbFromUnicode)    ' Convert string.
For i = 0 To UBound(x)
Debug.Print x(i)
Ergebnis = Ergebnis & Chr(x(i))
Next
Debug.Print Ergebnis    'Ergibt wieder €…†ŠšŸ§
End Sub
Diese ergibt folgendes Debug-Protokoll:
Deutsche Umlaute
196
214
220
228
246
252
223
ÄÖÜäöüß
Geänderte Keycodes
128
133
134
138
154
159
167
€…†ŠšŸ§


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

Betreff
Datum
Anwender
Anzeige
AW: Deutsche Umlaute
06.01.2022 11:01:47
Gert
Nochmal der Fragesteller:
Nach einer längeren Recherche habe ich eine wichtige Spur zu Codepages gefunden. Die der Veränderung der Umlaute zugrunde liegende Codepage scheint 'MacRoman' zu sein. Dort finden sich alle 7 Sonderzeichen unter dem entsprechenden Code. 'MacRoman' ist relativ universell für die Darstellung der Sonderzeichen westeurop. Sprachen. Aber wann, wo und warum kommt die Codepage ins Spiel? Denn unter Windows wird die 850 angezeigt. Und unter Google habe ich keine Referenz gefunden, aus der ein Zusammenhang zwischen VBA und 'MacRoman' hervorgeht.
AW: Deutsche Umlaute
06.01.2022 18:03:10
Piet
Hallo
Landesspezifische Sonderzeichen ist so ein Problem, Arbeite ich auf einem türkischen PC hat der keine deutschen Umlaute, und der deutsche PC keine türkischen Sonderzeichen. Abhilfe: man tauscht die Buchstaben im Text einfach aus. Besonders leicht bei Texten die in einer Excel Datei sind. Unten ein Beispiel. Tippe ich hinter c,s,i,g, einen Punkt werden diese Buchstaben in türkische Sonderzeichen konvertiert. Genauso kann man ae, oe, ue in deutsche Umlaute konvertieren.
Den Code für die Sonderzeichen fand ich heraus mit dem Befehl: - MsgBox AscW(ActiveCell) wo kopierte Sonderzeichen drinstanden.
mfg Piet
  • 
    Sub Buchstaben_tauschen_Punkt()
    With Cells
    .Replace "g.", ChrW(287), xlPart, , MatchCase = False
    .Replace "c.", ChrW(231), xlPart, , MatchCase = False  '231
    .Replace "s.", ChrW(351), xlPart, , MatchCase = False
    .Replace "i.", ChrW(305), xlPart, , MatchCase = False
    .Replace "C.", ChrW(199), xlPart, , MatchCase = False  '199
    .Replace "I.", ChrW(304), xlPart, , MatchCase = False
    .Replace "S.", ChrW(350), xlPart, , MatchCase = False
    .Replace "G.", ChrW(286), xlPart, , MatchCase = False
    End With
    End Sub
    

  • Anzeige
    AW: Deutsche Umlaute
    06.01.2022 18:14:00
    Gert
    Danke für Deinen Beitrag, Piet. So eine Austausch-Routine habe ich auch schon angedacht. Aber ich hatte gehofft, dass es irgendwo eine Einstellung gibt, die Codepage festlegt.
    Abgesehen mal davon, ...
    06.01.2022 21:03:29
    Luc:-?
    …Gert,
    könntest du es ja auch mal mit dem Ersatz der (dt) UmlautBuchstaben durch UnicodeZeichenKombis aus einfachem Vokal und kombinierendem diakritischen Zeichen versuchen → statt ae für ä dann a und Trema (¨). Als Fml sähe seine Erzeugung so aus: =UNIZEICHEN(97)&UNIZEICHEN(776)
    In einer BspFml so: =WECHSELN("Bäder";"ä";UNIZEICHEN(97)&UNIZEICHEN(776))
    In VBA müsste für die 1.Fml dann das geschrieben wdn: ChrW(97)&ChrW(776)
    Für SonderBuchstaben wie großes (ẞ) und kleines ß ist das allerdings nicht möglich. Hier muss auf Ersatz durch ss/Ss/SS (offiziell) bzw sz/Sz/SZ (inoffiziell) ausgewichen wdn.
    Gruß, Luc :-?
    „Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon
    Anzeige
    AW: Abgesehen mal davon, ...
    07.01.2022 10:03:18
    Gert
    Danke auch Dir Luc. Ich suche keine Prozedur oder Funktion, die das eine Zeichen durch das andere ersetzt, sondern eine Methode, die beim Speichern einer Excel-VBA-Datei auf dem Zielrechner die gleiche Codepage anwendet wie die, mit der ich die Datei erzeugt habe, d.h. '850'. Nachdem ich die Codepage identifiziert habe, mit der die Umlaute "umgeschrieben" wurden, und diese ausgerechnet den Namen ''MacRoman' hat, liegt es ja auf der Hand, dass das etwas mit dem Produkt "Microsoft Excel für Mac" auf fdem Zielrechner zu tun hat. Frage: Kann ich die Codepage auf dem Zielrechner vorübergehend zu '850' ändern. Und kann man das evtl. innerhalb VBA und nur für VBA erzwingen. Dann würden 2 Systeme mit der gleichen Sprache kommunizieren.
    Anzeige
    Meine AW war dafür gedacht, ...
    07.01.2022 10:28:08
    Luc:-?
    …Gert,
    zu versuchen, ob das auch ohne CodePage-Änderung fktioniert, falls sie unicode-kompatibel ist. Denn Unicode sollte dann immer das gleiche Ergebnis liefern.
    Luc :-?

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige