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

Text in ASCII Code

Forumthread: Text in ASCII Code

Text in ASCII Code
amintire
Hallo alle zusammen,
habe eine Excel Mappe vorbereitet und benötige dringend eure Hilfe.
UserForm wurde vorbereitet und beschrieben, manche Buttons habe ich selber schon gemacht Texte löschen in allen TextBoxen.
bei den anderen Funktionen weiß ich im Code nicht weiter.
Das ganze soll als VBA Code geschrieben werden.
https://www.herber.de/bbs/user/74502.xlsm
So wie in den Textfeldern vorbereitet müsste das Ergebnis aussehen wenn auf die Buttons geklickt wird.
Der Beispieltext wird in ASCII umgewandelt, dieser ASCII Text wird in 3er Gruppen gebildet,
das ganze muss dann auch wieder umgewandelt werden sodass zum Schluss wieder der Beispieltext erscheint.
Lieben Gruß
Amina
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Text in ASCII Code
22.04.2011 16:45:32
ransi
HAllo
Wie kommst du darauf ?
BeispielText = 651011151121051011088410112011620 ?
ransi
AW: Beispiel...
22.04.2011 16:53:46
amintire
Hallo Ransi,
also in der Tabelle zb. wäre die Formel =code()
Also jeder Buchstabe in eine Zelle,
und die Formel =code() bezieht sich auf jeden Buchstaben, da kommen dann die Zahlen raus.
Das ganze halt irgendwie in VBA Code.
Beispiel:
https://www.herber.de/bbs/user/74503.xlsm
Lieben Gruß
Amina
Anzeige
strConv(StrText, vbFromUnicode)
22.04.2011 17:23:50
ransi
Hallo
Als Ansatz:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Sub machs()
    MsgBox String_To_Ascii("BeispielText")
    MsgBox mach_Dreier("BeispielText")
End Sub


Public Function String_To_Ascii(strText As String)
    Dim I As Integer
    Dim B() As Byte
    B = StrConv(strText, vbFromUnicode)
    Redim out(UBound(B))
    For I = LBound(B) To UBound(B)
        out(I) = B(I)
    Next
    String_To_Ascii = Join(out, "")
End Function



Public Function mach_Dreier(strText As String)
    Dim I As Integer
    Dim Z As Long
    Dim B() As Byte
    Dim counter As Integer
    B = StrConv(strText, vbFromUnicode)
    Redim out(UBound(B) + Len(strText) / 3)
    For I = LBound(B) To UBound(B)
        If counter = 3 Then
            out(Z) = "#"
            counter = 1
            Z = Z + 1
            out(Z) = B(I)
            Z = Z + 1
            Else:
            counter = counter + 1
            out(Z) = B(I)
            Z = Z + 1
        End If
    Next
    mach_Dreier = Join(out, "")
End Function


ransi
Anzeige
AW: umkehren ?
22.04.2011 19:31:18
amintire
Hallo Ransi,
funktioniert wunderbar,
wie kann ich aber die zwei folgenden Code umkehren ? Also von mach dreier zurück auf ACSII Text und von dem Text auf dem Beispieltext ?
Public Function String_To_Ascii(strText As String)
Dim I As Integer
Dim B() As Byte
B = StrConv(strText, vbFromUnicode)
Redim out(UBound(B))
For I = LBound(B) To UBound(B)
out(I) = B(I)
Next
String_To_Ascii = Join(out, "")
End Function

Public Function mach_Dreier(strText As String)
Dim I As Integer
Dim Z As Long
Dim B() As Byte
Dim counter As Integer
B = StrConv(strText, vbFromUnicode)
Redim out(UBound(B) + Len(strText) / 3)
For I = LBound(B) To UBound(B)
If counter = 3 Then
out(Z) = "#"
counter = 1
Z = Z + 1
out(Z) = B(I)
Z = Z + 1
Else:
counter = counter + 1
out(Z) = B(I)
Z = Z + 1
End If
Next
mach_Dreier = Join(out, "")
End Function
Gruß Amina
Anzeige
AW: umkehren ?
22.04.2011 20:07:41
ransi
HAllo
Hm..
Option Explicit


Public Sub machs()
    Dim s As String
    MsgBox String_To_Ascii("BeispielText")
    s = mach_Dreier("BeispielText")
    MsgBox s
    MsgBox mach_dreier_zurück(s)
End Sub



Public Function String_To_Ascii(strText As String)
    Dim I As Integer
    Dim B() As Byte
    B = StrConv(strText, vbFromUnicode)
    Redim out(UBound(B))
    For I = LBound(B) To UBound(B)
        out(I) = B(I)
    Next
    String_To_Ascii = Join(out, "")
End Function




Public Function mach_Dreier(strText As String)
    Dim I As Integer
    Dim Z As Long
    Dim B() As Byte
    Dim counter As Integer
    B = StrConv(strText, vbFromUnicode)
    Redim out(UBound(B) + Len(strText) / 3)
    For I = LBound(B) To UBound(B)
        If counter = 3 Then
            out(Z) = "#"
            counter = 1
            Z = Z + 1
            out(Z) = B(I)
            Z = Z + 1
            Else:
            counter = counter + 1
            out(Z) = B(I)
            Z = Z + 1
        End If
    Next
    mach_Dreier = Join(out, "")
End Function




Public Function mach_dreier_zurück(strText As String)
    mach_dreier_zurück = Replace(strText, "#", "")
End Function


Aus dem Ascii wieder einen Text machen kann ich nicht.
Wie soll man das unterscheiden ?
6510111
KAnn sein :
6
5
101
11
oder
65
10
11
1
oder, oder, oder.....
ransi
Anzeige
Das könnte nur mit Trennzeichen oder fester...
22.04.2011 20:12:05
Luc:-?
…Codelänge (also mit Vornullen) klappen, Amina.
Gruß + FrOst an alle, Luc :-?
AW: mit Formel geht es aber...
22.04.2011 20:21:57
amintire
Die Formel um den Buchstaben in eine Zahl zu machen
=code(A1)
und umgekehrt wäre es, also die Zahl in einen Buchstaben umwandeln
=ZEICHEN(A1)
Hmm... wie wäre denn eine andere Lösung ?
Gruß Amina
Anzeige
AW: vielleicht mit einer Überprüfung ?
22.04.2011 20:25:38
amintire
Buchstaben beginnen ab 65, alles davor sind Sonderzeichen und Zahlen, von dem Zahlcode her.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
0 1 2 3 4 5 6 7 8 9 : ; ? @ A B C D
Lieben Gruß
Amina
Natürlich geht das prinzipiell, aber nicht, wenn..
22.04.2011 20:28:39
Luc:-?
…man nicht weiß, wo der eine Code aufhört und der nächste beginnt, Amina,
nichts anderes wollten wir dir mitteilen.
Luc :-?
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Text in ASCII Code umwandeln und zurück


Schritt-für-Schritt-Anleitung

  1. Vorbereitung der Excel-Datei: Stelle sicher, dass du Excel 2010 oder eine neuere Version verwendest. Öffne eine neue Arbeitsmappe.

  2. Erstellen der VBA-Funktion:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (deineDatei.xlsm)" > Einfügen > Modul.
    • Kopiere den folgenden Code in das Modul:
    Public Function String_To_Ascii(strText As String) As String
        Dim I As Integer
        Dim B() As Byte
        B = StrConv(strText, vbFromUnicode)
        Dim out() As String
        ReDim out(UBound(B))
        For I = LBound(B) To UBound(B)
            out(I) = B(I)
        Next
        String_To_Ascii = Join(out, "")
    End Function
    
    Public Function mach_Dreier(strText As String) As String
        Dim I As Integer
        Dim Z As Long
        Dim B() As Byte
        Dim counter As Integer
        B = StrConv(strText, vbFromUnicode)
        ReDim out(UBound(B) + Len(strText) / 3)
        For I = LBound(B) To UBound(B)
            If counter = 3 Then
                out(Z) = "#"
                counter = 1
                Z = Z + 1
                out(Z) = B(I)
                Z = Z + 1
            Else
                counter = counter + 1
                out(Z) = B(I)
                Z = Z + 1
            End If
        Next
        mach_Dreier = Join(out, "")
    End Function
  3. Benutzung der Funktionen: Du kannst nun die Funktion String_To_Ascii verwenden, um Text in ASCII zu konvertieren und mach_Dreier, um den ASCII-Text in 3er Gruppen zu formatieren.

  4. Rückkonvertierung: Um den ASCII-Code wieder in Text umzuwandeln, kannst du eine weitere Funktion mach_dreier_zurück benötigen, die die "#" Trennzeichen entfernt. Dies könnte wie folgt aussehen:

    Public Function mach_dreier_zurück(strText As String) As String
        mach_dreier_zurück = Replace(strText, "#", "")
    End Function

Häufige Fehler und Lösungen

  • Fehler beim Ausführen der VBA-Funktionen: Stelle sicher, dass die Makros in Excel aktiviert sind. Gehe zu Datei > Optionen > Sicherheitscenter > Einstellungen für das Sicherheitscenter > Aktivieren von Makros.

  • ASCII Werte sind nicht korrekt: Überprüfe, ob du die StrConv Funktion korrekt verwendest. Die Funktion konvertiert Unicode-Strings in ASCII.


Alternative Methoden

  • Formelbasierte Methode: Du kannst die Excel-Formel =CODE(A1) verwenden, um den ASCII-Wert eines einzelnen Zeichens zu ermitteln. Umgekehrt kannst du =ZEICHEN(A1) verwenden, um ASCII-Werte in Text umzuwandeln.

  • Verwendung von Excel-Funktionen: Du kannst auch die eingebaute Excel-Funktion TEXT verwenden, um Text in ASCII zu konvertieren. Diese Methode ist allerdings weniger flexibel und erfordert mehr manuelle Arbeit.


Praktische Beispiele

  1. ASCII Code in Text umwandeln:

    • Beispiel: Wenn du den Text "Hallo" in ASCII umwandeln möchtest, gebe =String_To_Ascii("Hallo") in eine Zelle ein.
  2. Text in ASCII umwandeln:

    • Beispiel: Um die ASCII-Repräsentation von "Hallo" in 3er Gruppen zu erhalten, gebe =mach_Dreier("Hallo") in eine Zelle ein.

Tipps für Profis

  • Optimierung von VBA: Verwende Arrays, um die Leistung deiner VBA-Funktionen zu steigern, insbesondere bei größeren Textmengen.

  • Verwendung von Debugging-Tools: Nutze die Debugging-Tools im VBA-Editor, um Fehler zu identifizieren und den Ablauf deiner Funktionen zu überwachen.

  • Dokumentation für Funktionen: Kommentiere deinen Code gründlich, um die Nachvollziehbarkeit zu verbessern, besonders wenn andere Benutzer deine Funktionen verwenden.


FAQ: Häufige Fragen

1. Wie kann ich den ASCII-Code für ein Sonderzeichen ermitteln? Verwende die Formel =CODE("!@#") für jedes Zeichen, um den entsprechenden ASCII-Code zu erhalten.

2. Kann ich ASCII-Werte in andere Zahlensysteme umwandeln? Ja, du kannst die Excel-Funktion DEC2BIN, DEC2HEX etc. verwenden, um ASCII-Werte in binäre oder hexadezimale Formate umzuwandeln.

3. Was sind die Grenzen der ASCII-Darstellung? ASCII kann nur 128 Zeichen darstellen, was bedeutet, dass Zeichen außerhalb dieses Bereichs (wie Umlaute oder andere Sonderzeichen) nicht korrekt dargestellt werden. Verwende UTF-8 für eine breitere Zeichencodierung.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige