Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Umlaute im VBA-Code zerstört

Forumthread: Umlaute im VBA-Code zerstört

Umlaute im VBA-Code zerstört
06.10.2021 10:11:21
Günther
Hallo,
bei Kunden von mir passiert es manchmal, dass in Dateien mit VBA-Code sämtliche Umlaute darin in irgendwelche Sonderzeichen umgewandelt werden.
Z.B. lautet ein MsgBox-Text dann nicht mehr "Wollen Sie die Datei öffnen?", sondern "Wollen Sie die Datei Ɏffnen?" (oder irgendwie in dieser Art).
Vermutlich passiert das, wenn die Datei auf einem Rechner geöffnet wird, der mit den Umlauten ein Problem hat.
Meine Frage in die Expertenrunde lautet:
Was ist die genaue Ursache für diesen Effekt?
Wie kann man sich dagegen absichern?
Hilft es ev. die Datei im xlsb-Format zu speichern, anstatt im xlsm-Format?
Danke für Eure Hilfe!
Grüße
Günther
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Umlaute im VBA-Code zerstört
06.10.2021 10:31:05
oraculix
Hast du die Tabelle in Text Format Formatiert?
Oder unnötige Leerzeichen gelöscht?
'Leerzeichen nach letzten Buchstaben löschen
Dim loLetzte As Long, varArray As Variant, i As Long
With Worksheets("Tabelle1") 'Tabellennamen hier Anpassen
loLetzte = .Cells(.Rows.Count, "A").End(xlUp).Row 'Spalte hier Anpassen
varArray = WorksheetFunction.Transpose(.Range("A1:A" & loLetzte))
For i = LBound(varArray) To UBound(varArray)
varArray(i) = RTrim(varArray(i))
Next i
.Range(.Cells(1, "A"), .Cells(loLetzte, "A")) = WorksheetFunction.Transpose(varArray)
End With
Gruß
Oraculix
Anzeige
AW: Umlaute im VBA-Code zerstört
06.10.2021 12:01:40
EtoPHG
Hallo,
Ich vermute die genannten Kunden arbeiten mit einem griechischen Zeichensatz.
Die Antwort von oraculix einfach vergessen. Sein Geschreibsel hat absolut nix mit deinem Problem zu tun.
Gruess Hansueli
AW: Umlaute im VBA-Code zerstört
07.10.2021 08:58:24
Günther
Danke Hansueli für deine Rückmeldung.
Bei einem seinerzeitigen identen Fall (Kunde aus dem Versicherungswesen mit Filialen in Osteuropa) könnte es durchaus der Fall gewesen sein, dass auf diesem PC in irgendwo (Bulgarien, Ukraine ...) ein griechischer Zeichensatz mit im Spiel war. Beim aktuellen Anlass (Restaurantbetrieb in Graz) glaube ich das eher nicht. Ich werde aber beim Kunden diesbezüglich nachfragen. Wenn ich mich recht erinnere, hat dort irgendein Mitarbeiter ein Apple-Gerät in Betrieb. Vielleicht liegt es daran.
Was aber zur eigentlich wichtigsten Frage führt: Kann man das irgendwie verhindern?
Es erscheint mir schon sehr unbefriedigend, wenn es möglich ist, den VBA-Code einer fertig programmierten Datei dadurch zu "zerstören", dass man die Datei einfach auf einem "ungeeigneten" Rechner aufmacht und wieder abspeichert - insbesonderen ohne je in den VBA-Editor einzusteigen?
Grüße
Günther
Anzeige
AW: Umlaute im VBA-Code zerstört
08.10.2021 12:49:34
Piet
Hallo
das Thema ist mir auch bekannt, arbeite öfters auf türkischen Rechnern. Die haben auch Sonderzeichen beim Buchstaben C, S, I mit Punkt darüber.
Das abfangen ist schwierig. In dem Fall kann man versuchen solche Zeichen im Code statt Text als Chr(xxx) Zahlencode anzugeben. Zahl 65 = A, usw.
Den Textstring muss man dafür ggf. splitten. Bleibt die Frage ob die MsgBox es dann korrekt anzeigen kann? Schwieriges Thema wenn es daran liegt!
mfg Piet
Anzeige
AW: Umlaute im VBA-Code zerstört
08.10.2021 12:54:43
Piet
Nachtrag: könnt ihr die Umlaute ggf. als "ae", "oe" oder "ue" angeben? Dann wäre das Prolem vielleicht gelöst.
mfg Piet
AW: Umlaute im VBA-Code zerstört
09.10.2021 15:43:48
Günther
Danke Piet für deine Rückmeldung - schön zu hören, dass andere das Problem auch haben.
Es mehren sich die Hinweise, dass auch das Öffnen der Datei auf einem Apple-Gerät die Umlaute im VBA-Code zerstören kann.
Der Workaround, der mir am naheliegendsten erscheint, ist es, alle notwendigen Texte mit Umlauten auf einem (ausgeblendeten) Tabellenblatt zu hinterlegen und dann auf diese zuzugreifen. Das können MsgBox-Texte sein, aber auch Dateipfade, die das Makro verwenden muss und deren vorgegebene Ordnernamen Umlaute enthalten etc.
Texte, die in einem Tabellenblatt gespeichert sind, sind soweit ich das mitbekommen habe, von der Problematik nicht betroffen.
Entspricht das auch deiner Erfahrung?
Grüße
Günther
Anzeige
AW: Umlaute im VBA-Code zerstört
09.10.2021 18:44:01
Piet
Hallo
Ja bedingt, eine Zeitlang hatte ich da auch Probleme, bis ich eine Datei öffnete mit einer Arial TUR Tabellen Schrifteinstellung für die Türkei.
Wenn ich diese Blätter verwendete war das Tabellen Problem gelöst. Im Makro Code konnte ich aber die Zeichen nicht einsetzen, es sei denn der Laptop war in der Landessprache auf Türkisch gesetzt und mit einem Türkischen Betriebssystem programmiert.
Eine schöne Besonderheit gibt es bei ä, ö, ü Umlauten von MP3 und Videos von Youtube. Lade mal Körpersprache von Stefan Verra herunter. Optisch sieht man Umlaufe. Listet man den Ordner mit einem Dir$ oder FSO Programm auf kommen Fehlermeldungen "Kann Dateiname nicht lesen"! Schon mal aufgefallen?
Der amüsante Witz, dort bestehen die Umlaute aus 2 Zeichen, was du erst merkst wenn du das "ö" usw. von Hand schrittweise löschst. Dann verschwinden die Pünktchen und es bleibt ein a, o, u zurück! Die Pünktchen werden als Sonderzeichen drübergeschoben! Optisch ist der Unterschied NICHT zu erkennen!
Den Fehler im vorher einwandfrei funktionierenden Auflisten Makro zu finden bereitete mir einige schlaflose Nächte! Ebenso meckert Excel wenn ich mal von Freunden Beispieldateien mit türkischen Sonderzeichen gesendet bekomme. Die kann mein Ordner Auflisten Programm auch nicht ab. Ich schreibe sie um!
mfg Piet
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Umlaute im VBA-Code richtig handhaben


Schritt-für-Schritt-Anleitung

  1. VBA-Code überprüfen: Stelle sicher, dass alle Umlaute im VBA-Code korrekt eingegeben sind. Eine einfache Möglichkeit, Umlaute zu ersetzen, ist die Verwendung von Chr()-Funktionen, um die Zeichen durch ihre ASCII-Werte zu ersetzen. Zum Beispiel:

    MsgBox "Wollen Sie die Datei " & Chr(246) & "ffnen?" ' Chr(246) für ö
  2. Zeichensatz des Systems prüfen: Überprüfe den Zeichensatz des Systems, auf dem die Datei geöffnet wird. In einigen Fällen kann ein griechischer oder türkischer Zeichensatz zu Problemen mit der Darstellung von Umlauten führen.

  3. Dateiformat wählen: Speichere die Datei im .xlsb-Format, um sicherzustellen, dass der VBA-Code und die Umlaute korrekt behandelt werden. Das .xlsm-Format kann anfälliger für Zeichenprobleme sein.

  4. Verwendung von Tabellenblättern: Lagere Texte mit Umlauten in einem ausgeblendeten Tabellenblatt. Auf diese Weise kannst du sicherstellen, dass die Umlaute in Excel richtig angezeigt werden:

    MsgBox Worksheets("Umlaute").Range("A1").Value

Häufige Fehler und Lösungen

  • Problem: Umlaute werden in Sonderzeichen umgewandelt.

    • Lösung: Stelle sicher, dass die Datei in einem kompatiblen Format gespeichert ist. Versuche, den Code so zu ändern, dass Umlaute durch ASCII-Werte ersetzt werden.
  • Problem: Umlaute werden auf anderen Computern nicht richtig angezeigt.

    • Lösung: Überprüfe die Ländereinstellungen und den Zeichensatz des Systems, das die Datei öffnet. Wenn möglich, arbeite mit einem einheitlichen Zeichensatz.

Alternative Methoden

  • Umlaut-Codes verwenden: Anstelle von direkten Umlauten kannst du Umlaute durch Ersatzzeichen darstellen, z.B. "ae" für "ä", "oe" für "ö" und "ue" für "ü". Dies könnte helfen, Probleme beim Speichern oder Übertragen der Datei zu vermeiden.

  • HTML-Darstellung: Wenn du mit HTML arbeitest, kannst du HTML-Entitäten verwenden, um Umlaute darzustellen. Zum Beispiel:

    ä für ä, ö für ö

Praktische Beispiele

  1. VBA mit Chr()-Funktion:

    Sub UmlauteBeispiel()
        MsgBox "Wollen Sie die Datei " & Chr(228) & "ffnen?" ' Chr(228) für ä
    End Sub
  2. Umlaute in einer Tabelle speichern:

    • Erstelle ein ausgeblendetes Tabellenblatt mit den notwendigen Texten: A
      Wollen Sie die Datei öffnen?
    • Greife im VBA-Code darauf zu:

      Sub ZeigeUmlaut()
      MsgBox Worksheets("Umlaute").Range("A1").Value
      End Sub

Tipps für Profis

  • Vermeidung von Leerzeichen: Achte darauf, dass keine unnötigen Leerzeichen in den Zellen vorhanden sind, bevor du mit dem VBA-Code arbeitest. Dies kann zu unerwarteten Ergebnissen führen.

  • VBA-Editor Einstellungen: Überprüfe die Einstellungen im VBA-Editor, um sicherzustellen, dass die Schriftart und der Zeichensatz korrekt eingestellt sind.

  • Testen auf verschiedenen Systemen: Teste deine Excel-Datei auf verschiedenen Betriebssystemen und in unterschiedlichen Excel-Versionen, um sicherzustellen, dass die Umlaute überall korrekt dargestellt werden.


FAQ: Häufige Fragen

1. Warum verschwinden Umlaute in meinem VBA-Code?
Das passiert häufig, wenn die Datei auf einem Computer mit einem anderen Zeichensatz geöffnet wird. Überprüfe die Ländereinstellungen und speichere die Datei im .xlsb-Format.

2. Wie kann ich Umlaute in Excel richtig umwandeln?
Eine Möglichkeit ist, Umlaute durch ASCII-Werte in deinem VBA-Code zu ersetzen. Alternativ kannst du Umlaute in einem ausgeblendeten Tabellenblatt speichern und darauf zugreifen.

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