Microsoft Excel

Herbers Excel/VBA-Archiv

Replace von Zeichen die nicht ASCII sind

Betrifft: Replace von Zeichen die nicht ASCII sind von: Siegfried
Geschrieben am: 14.09.2020 17:38:26


Hallo alle Wissenden!
Stehe wieder einmal vor einem Problem zu welchem ich keine Lösung finde.
Bei der Auswertung einer *.html-Datei welche in Polnisch gehalten ist, kommen natürlich Zeichen aus dem Polnischen vor. Teile von Texten welche ich auf Deutsch ändern möchte enthalten auch solche Zeichen, siehe Bild „Geschlossen_bis.jpg“, bei der Verwendung von VBA Befehl „Replace“ kann ich diese Zeichen, Replace("Zamknięty do","Geschlossen bis"), also das „ę“ mit dem Hacken nach unten, nicht eingeben, da bringt er mir immer im Makro ein „?“.
Wie müsste also der Replace-Befehl aussehen das er diese „ę“ beim Auslesen erkennt.
Hätte es mit „Replace(Inhalt,“ Zamkni“ & chr(118) & “ęty do“, "Geschlossen bis") versucht, will er aber nicht.
Es gibt natürlich auch noch einige andere Polnische Buchstaben mit so allen möglichen Häkchen oben oder Unten, wenn man den Richtigen Weg hat, müsste ja dann die Lösung die gleiche sein.
Gewisse Bereiche in dieser *.html enthalten dann auch noch umgewandelte Zeichen wie,
' %C3%84 = Ä, %C3%A4 = ä, %C3%BC = ü, %C3%B6 = ö,%C3%9F = ß, %20 = " ", %252F = \
wo ich bis jetzt auch nicht dahintergekommen bin, welches Tool zur Umwandlung in ASCII man da nehmen müsste/könnte.
Ich hoffe es kann mir da jemand weiterhelfen und einen Lösungsansatz zeigen
Gruß Siegfried

Betrifft: Was genau willst Du?
von: lupo1
Geschrieben am: 14.09.2020 17:48:26

Dass alle z.B. akzentuierten Zeichen zum Grundzeichen ohne Akzent werden, also é, è usw. zu e?

Soll aus der polnischen Stadt das deutsch geschriebene "Lodz" werden?

Soll immer eine 1:1-Umwandlung stattfinden, also niemals 1 in n Zeichen oder n in 1 Zeichen?

Betrifft: AW: Was genau willst Du?
von: Siegfried
Geschrieben am: 14.09.2020 18:38:11

Hallo lupo1,
nun bei den Ortsnamen, Straße usw. möchte ich schon das Original akzentuierten Zeichen erhalten haben, kann daher nicht über die gesamte Tabelle mit Replace drüber gehen.
Bei bestimmten Angaben, muss ich die in Deutsch übersetzen, da ja sonst keiner der es liest, ohne es mit was anderem zu übersetzen, die Bedeutung nicht erkennt und versteht das die Filiale eben „Geschlossen ist bis …….“ .
Habe mir daher im Makro diesen Replace geschrieben:

  • If Land = "PL" Then _
    Wert_Offen = Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Wert_Offen, "
  • ", ""), _
    "Pon.", "Mo"), "wto.", "Di"), "sro.", "Mi"), "Czw", "Do"), "Pt.", "Fr"), "Sob.", "Sa"), "Ndz.", "So."), "handlowa", "Offen"), "handl.", "Offen"), "ty do", "Geschlossen bis"), "Zamkni", ""), "ty w dn.", "Geschlossen vom"), "Zamkni", "")

  • also wenn ein akzentuiertes Zeichen vorkommt, das ganze zweigeteilt dort wo das akzentuierte Zeichen vorkommt, Schönheitsfehler, genau dieses Zeichen bleibt aber auch erhalten vor dem Deutschen Text.

    Betrifft: AW: Replace von Zeichen die nicht ASCII sind
    von: Daniel
    Geschrieben am: 14.09.2020 17:52:42

    Hi
    der VBA-Edior kann nur den klassischen 8-Bit-Zeichensatz.
    wenn man UniCode-Zeichen in VBA verwenden will, dann muss man diese über die Funktion CHRW(...) oder die Funktion worksheetfunction.Unichar(...) verwenden, wobei meines Wissens nach das UniChar mehr zeichen beherrscht als das ChrW.

    ich persönlich würde mich aber nicht großartig mit irgendwelchen Zeichencodes rumplagen, sondern die Zeichen in einer Hilfstabelle hinterlegen und diese verwenden:
    Sheets(1).Cells.Replace Sheets("Hilfstabelle").Range("A1").value, Sheets("Hilfstabelle").Range("B1").value, lookat:=xlpart, Matchcase:=true
    wenn man die Daten über die Importfunktion einliest, kann man das Problem oft auch einfach damit beheben, dass man im Schritt 1 des Assistenten bei "Dateiursprung" das passende auswählt.

    Gruß Daniel

    Betrifft: AW: Replace von Zeichen die nicht ASCII sind
    von: Marc
    Geschrieben am: 14.09.2020 17:52:55

    Hallo Siegfried,

    also rein von der Logik her:

    Wenn er Zamknięty nicht erkennt, erkennt er auch nicht Zamkni“ & chr(118) & “ęty. Du hast das ę ja immer noch drin.

    Hast du es mal damit versucht:

    Zamkni“ & chr(118) & “e“ & “ty“

    Ich hab nicht so viel Ahnung von ASCII, aber rein von der Logik sollte das gehen.
    Entschuldige, wenn es nicht klappt.

    Gruß Marc

    Betrifft: AW: Replace von Zeichen die nicht ASCII sind
    von: Nepumuk
    Geschrieben am: 14.09.2020 18:01:37

    Hallo Siegfried,

    in den Symbolen von Windows hat das ę den Hexadezimalwert 119 das ist in Dezimal umgerechnet 281. Du kannst aber auch mit dem Hexadezimalwert rechnen.

    In Zelle A1 steht: Zamknięty do

    Dann diesen Code testen:

    Public Sub Test()
        Call Cells(1, 1).Replace("Zamkni" & ChrW(&H119) & "ty do", "Geschlossen bis")
    End Sub

    Gruß
    Nepumuk

    Betrifft: AW: Replace von Zeichen die nicht ASCII sind
    von: Siegfried
    Geschrieben am: 14.09.2020 23:47:44

    Hallo Nepumuk,
    nun dein Hinweis mit Replace("Zamkni" & ChrW(&H119) & "ty do", "Geschlossen bis" hat mir am besten geholfen, mit dieser Art funktioniert der Replace bei allen gleichen ChrW(&H119) vorkommen.
    Irgendwann hatte ich schon mal davon gelesen nur leider immer verkehrt gesucht, nach WChr, da wurde ich natürlich nicht fündig.

    Für mich ist nun noch die große Frage, in welcher Tabelle oder LINK kann ich Hinweise zu, eben z.B. Hexadezimalwert 119 oder wie du geschrieben hast, Dezimal umgerechnet 281, finden.

    Denn solche Vorkommen von diakritischen Zeichen, kommen ja gerade in östl. Ländern häufig vor, kann ja doch nicht jedes Mal, wenn mir so ein Zeichen Probleme macht, hier einen Hilferuf absetzen.

    Jedenfalls einmal ein DANKE an alle die geantwortet haben, zur Antwort von Daniel, also mit dem Unichar blicke ich momentan überhaupt nicht durch. Vielleicht könntest du mir da noch etwas Nachhilfe geben.

    Zu Marc, ja genau an diesen beiden nicht funktionierenden Lösungen bin ich auch gestanden, während mit ChrW flutscht es wie es gewünscht wird, sofern man den Hex oder DEZ Wert kennt.

    Für mich ist nach wie vor noch diese Frage offen,
    Gewisse Bereiche in dieser *.html enthalten dann auch noch umgewandelte Zeichen wie,
    ' %C3%84 = Ä, %C3%A4 = ä, %C3%BC = ü, %C3%B6 = ö,%C3%9F = ß, %20 = " ", %252F = \

    Bis jetzt habe ich mir geholfen, da ich an anderen stellen (z.B. Orts od. Straßenamen) mit richtiger Anzeige des Buchstaben finden konnte, Notfalls sogar über das WEB da mir die Koordinaten des Zielpunktes bekannt sind. Ist natürlich eine sehr mühsame und Zeitaufwendige Sache.

    Habe bis jetzt auch nicht herausgefunden in welcher Art Tabelle ich das Rätsel lösen könnte. Aus/in einer Tabelle von „Html Sonderzeichen“ bin ich leider auch nicht fündig geworden, vermute das es für die Darstellung auf der WEB-Seite erforderlich ist diese Zeichen nicht im Klartext zu schreiben.
    Nun vielleicht gibt es noch Helferleins die mir da auch noch weiterhelfen könnten.

    Gruß Siegfried

    Betrifft: AW: Replace von Zeichen die nicht ASCII sind
    von: Nepumuk
    Geschrieben am: 15.09.2020 09:01:35

    Hallo Siegfried,

    in Excel Reiter Einfügen - ganz rechts - Symbol. Darin wählst du oben bei Schriftart "Arial Unicode MS" und unten bei von "Unicode (hex)". Wenn du jetzt ein bisschen nach unten scrollst findest du das ę und unten bei Zeichencode den Hexadezimalwert dazu. Siehe Bild:



    Zur Funktion UNIZEICHEN (englisch UNICHAR) kann ich nur sagen, dass du damit Unicode-Zeichen in Tabellen erzeugen kannst:

     A
    1ę

    ZelleFormel
    A1=UNIZEICHEN(281)

    Gruß
    Nepumuk

    Betrifft: AW: Replace von Zeichen die nicht ASCII sind
    von: Siegfried
    Geschrieben am: 15.09.2020 14:08:03

    Hi Nepumuk,
    also dein Hinweis auf die Einfügung eines neuen Reiters für Symbol, ist mir nach langem Suchen endlich gelungen, habe erst seit kurzem Office 2019, aber wie ich die Tabelle da rein bekomme ist mir leider ein Rätsel, mit 76 anscheinend doch bereits zu Blöd dazu.

    Bitte nochmals um Hilfe, hoffe das mit dem neun Menüpunkt „Symbol“ stimmt wenigstens.

    Gruß Siegfried


    Betrifft: AW: Replace von Zeichen die nicht ASCII sind
    von: Nepumuk
    Geschrieben am: 15.09.2020 14:23:34

    Hallo Siegfried,

    du sollst keinen neuen Reiter einfügen, sondern im Reiter "Einfügen" auf den Button "Symbol" klicken. Den findest du ganz rechts auf dem Reiter "Einfügen".



    Gruß
    Nepumuk

    Betrifft: AW: Replace von Zeichen die nicht ASCII sind
    von: Siegfried
    Geschrieben am: 15.09.2020 21:57:39

    DANKE Nepumuk,

    für den neuerlichen Nachhilfeunterricht, da habe ich beim ersten Anlauf echt nicht durchgeblickt.

    Bleibt also noch die Frage mit den unter HTML abgespeicherten Werte, nach welchen ich gefragt habe, offen.

    Gruß Siegfried

    Betrifft: AW: Replace von Zeichen die nicht ASCII sind
    von: Nepumuk
    Geschrieben am: 16.09.2020 08:40:48

    Hallo Siegfried,

    Dazu kann ich nichts sagen. Ich lass die Frage offen.

    Gruß
    Nepumuk

    Betrifft: AW: Replace von Zeichen die nicht ASCII sind
    von: Daniel
    Geschrieben am: 15.09.2020 10:02:33

    "also mit dem Unichar blicke ich momentan überhaupt nicht durch. "

    UniChar ist das gleiche wie ChrW.
    ChrW ist die VBA-Funktion, UniChar ist die Excelfunktion.
    Über Worksheetfunction kann man die Excelfunktionen auch in VBA einsetzen, was manchmal sinnvoll ist, weil sie etwas anders oder etwas besser funktionieren als die VBA-Variante.
    Gruß Daniel

    Betrifft: Anmerkung:
    von: Luc:?
    Geschrieben am: 14.09.2020 19:20:23

    Es gibt in Unicode 2 Methoden, Siegfried,
    um Buchstaben mit diakritischen* Zeichen zu erzeugen:
    1. Das komplette Zeichen verwenden, zB é, wie es in diesem Fall auch per Tastatur aus ´ und e erzeugt wdn kann;
    2. dem normalen Buchstaben ohne Diakritische Zeichen ein kombinierendes (diakritisches) Zeichen folgen lassen.
    Zeichen und ZeichenKombi sind einander nicht gleich. Es könnte folglich auch dazu kommen, das ein Zeichen deshalb nicht gefunden wird, weshalb es ggf sicherer wäre, eine Kopie des Zeichens zu verwenden bzw beide Bildungsarten eindeutig zu unterscheiden. Die Kombi lässt sich übrigens leichter ohne diakritisches Zeichen darstellen.
    * Das ist der richtige Fachausdruck, der auch in der ZeichenTabelle verwendet wird!
    Gruß, Luc :-?
    „Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon

    Beiträge aus dem Excel-Forum zum Thema "Replace von Zeichen die nicht ASCII sind"