1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Unicode in VB Editor wird nicht erkannt

Discussion in 'Office-Programme' started by Marlu, Mar 1, 2007.

Thread Status:
Not open for further replies.
  1. Marlu

    Marlu Byte

    Folgendes Problem: ich habe eine DBF-Datei, die anstelle der Umlaute (ä,ö,usw.) Sonderzeichen ausspuckt, die ich auf Knopfdruck per Makro in die entsprechenden Umlaute tauschen wollte. Erstes Problem war, dass VisualBasic einige Sonderzeichen nur als Unicode kannte, sodaß ich die erstmal ermitteln mußte. Das hat geklappt und es funktioniert auch soweit mit dem Ersetzen, außer bei einem (Ä als Großbuchstaben). Dort lautet der Unicode " %" und er ersetzt mir das Sonderzeichen nicht. Kann das an dem Leerzeichen liegen innerhalb des Codes, dass er das nicht erkennt?????
    Weiss jemand eine Lösung? Oder kann mir jemand sagen, was ich ins Makro eingeben muß, damit er mir am Schluss einfach alles Sonderzeichen in ein Ä umwandelt (ist ja nur noch das eine über am Ende).


    DANKE SCHONMAL!

    Anbei mal das Makro, der rotmarkierte Bereich ist das, was er mir nicht macht:



    Sub Makro4()
    '
    ' Makro4 Makro
    ' Makro am 27.02.2007 von Marlu aufgezeichnet
    '

    Selection.Copy
    Cells.Replace What:=StrConv("€%", vbFromUnicode), Replacement:="ß", LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=False

    Selection.Copy
    Cells.Replace What:="÷", Replacement:="ö", LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=False

    Selection.Copy
    Cells.Replace What:="³", Replacement:="ü", LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=False

    Selection.Copy
    Cells.Replace What:="õ", Replacement:="ä", LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=False

    Selection.Copy
    Cells.Replace What:="Í", Replacement:="Ö", LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=False

    Selection.Copy
    Cells.Replace What:=StrConv("„%", vbFromUnicode), Replacement:="Ü", LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=False


    Selection.Copy
    Cells.Replace What:=StrConv(" %", vbFromUnicode), Replacement:="Ä", LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=False


    End Sub
     
  2. brum

    brum Kbyte

    Hallo Marlu

    Kann es sein, dass das erste Zeichen gar kein Space chr$(32) ist sondern ein chr$(160) sein sollte?

    Versuchs doch mal mit ...StrConv(Chr$(160)+"%",...

    Gruss
    Bruno


    PS: Warum hast Du die Frage nicht am bestehenden Thread angehängt?

    Falls ich falsch liege, mache mal ? Asc(StrConv(Range("A1"), vbUnicode))...
     
  3. Marlu

    Marlu Byte

    Hallo Bruno,

    danke für Deine Antwort, leider funktioniert das auch nicht :-). Sowas blödes aber auch, er erkennt das eine Zeichen nicht , grrr...

    Hast Du noch einen Tip? :bitte:

    Ich schick Dir das Zeichen in Excel sonst auch gerne zu.

    Ganz lieben Dank für Deine Mühe bisher, ich hoffe, wir bekommen das hin...

    Gruß
    Marlu

    P.S. Ich dachte, ich mach mal ein neues Thema auf, weil die Überschrift ja noch vom Grundproblem her kam, und das hattest Du ja schon zu 90 % gelöst (bis auf das eine doofe Zeichen) . Dachte, vielleicht weiß so jemand eher Rat.
     
  4. brum

    brum Kbyte

    Hallo Marlu

    Kannst Du vielleicht nochmal diese Unicode-Zeichen hier in den Thread kopieren? (wie beim letzten mal)

    Vielleicht kann ich Dir dann weiterhelfen.

    Gruss
    Bruno
     
  5. Marlu

    Marlu Byte

    Hallo Bruno,

    danke für Deine Mühe.

    Das Zeichen ist ─ und hat in der Zeichentabelle unter Schriftart Arial die Bezeichnung U+2500, Zeichensatz Unicode.

    Viel Erfolg :-).

    Gruß
    Marlu
     
  6. brum

    brum Kbyte

    He Marlu

    Das erste Zeichen ist ein "0". Du musst also StrConv(Chr$(0)+"%" einfügen!

    Ich hoffe, jetzt klappt's.

    Gruss
    Bruno
     
  7. Marlu

    Marlu Byte

    Hallo Bruno!!!!!!!!!!!!!!!!

    :jump: :jump: :jump: :jump:


    :laola:

    Es funktioniert!!!!!!!!!!!!!!!!

    Kann Dir gar nicht sagen, was für ein Gefühl das ist, diesen doofen Balken nicht mehr zu sehen. Du bist genial!!!!!!!

    Weiß gar nicht, wie ich mich bedanken soll! Schön, jetzt kann ich sowas von entspannt ins WE gehen.


    DANKE DANKE DANKE

    Falls Du mal Hilfe brauchst, hahaha....

    Herzlichen Gruß
    Marlu
     
  8. TheTick

    TheTick ROM

    Hallo Leute,

    auch wenn der Thread beendet scheint, wärme ich ihn mal kurz nochmal auf. Auch wenn das Problem gelöst scheint, komme ich im Moment mit einer ähnlichen Problemstellung nicht weiter.

    Ich möchte den umgekehrten Weg gehen wie Marlu, nämlich normele Zeichen in Unicode-Zeichen umwandeln. Sollte ja mit dem Makro kein Problem sein, einfach Input und Output vertauschen, aber irgendwie gehts nicht.

    Ich möchte alle Vokale mit Zirkumflex (z.B. â) in Vokale mit umgedrehten Zirkumflex (z.B. ǎ) umwandeln. Ich habe mir mit dem Befehl

    Print StrConv(Range("F1"), vbUnicode)

    im Direktbereich die Zeichen umwandeln lassen, sprich die Unicodecodes der umzuwandelnden Zeichen erhalten. Ich füge sie bei ein

    Selection.Copy
    Cells.Replace What:="â", Replacement:=StrConv("Î", vbUnicode), LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=False


    (das Zeichen das jetzt in HTML angezeigt wird, entspricht nicht dem Zeichen das ich auf meinem Computer in VB sehe...)

    und führe das Makro aus. Es ersetzt zwar das Zeichen, aber nicht durch das Zeichen das ich zuvor im Direktbereich ermittelt habe.

    Habt ihr Ideen? Was mache ich falsch?

    Grüße
    TheTick
     
  9. brum

    brum Kbyte

    Zuerst eine Anmerkungen: Es ist besser einen neuen Thread zu eröffnen als einen alten auszugraben. Du kannst ja in Deinem (neuen) Thread immer noch einen Link auf einen alten Thread setzen, damit wir wissen, was Du schon gelesen hast.

    Code:
    Cells.Replace What:="â", Replacement:=StrConv("Î", [B]vbFromUnicode[/B]), LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=False
    
    (Falls die Zeichenfolge "Î" nicht funktionieren würde, musst Du diese durch "Î" + Chr$(1) oder Chr$(206) + Chr$(1) ersetzen.)

    "vbUnicode" brauchst Du zum Ermitteln eines Unicode-Zeichens, das Du in der Suche dann wieder umgekehrt (vbFromUnicode) verwenden musst...

    Gruss
    Bruno
     
    Last edited: May 16, 2008
Thread Status:
Not open for further replies.

Share This Page