Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1240to1244
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

Zeichenfolge mit Chr(*) verschleiern

Zeichenfolge mit Chr(*) verschleiern
Obg67
Hallo zusammen,
ich habe eine Benutzerprüfung geschrieben, die Klarnamen enthält. Sie funktioniert reibungslos.
Jetzt möchte ich gern im VBA-Code die Klarnamen mit ASCII-Code verschleiern. Hier stoße ich an Grenzen, vermutlich liegt es an fehlenden Anführungszeichen, Klammern oder Verkettungszeichen.
Der funktionierende Code :
Private Sub Auto_Open()
' Prozedur schon beim Öffnen der Datei ausführen
Dim wb As Workbook
Dim ws As Worksheet
Dim rng As Range
Dim Knopf As Long
Const cAllowedUser = ";Anton Aal;Berta Barbe;Dora Dorsch; "
Application.WindowState = xlNormal
Application.ScreenUpdating = False
Set wb = Workbooks("Benutzerkontrolle_6.xls")
Set ws = wb.Worksheets("Tabelle1")
ws.Visible = xlSheetVisible
Application.ScreenUpdating = True
' Berechtigung prüfen
If InStr(cAllowedUser, ";" & Environ("username") & ";") Then
MsgBox "Herzlich willkommen!"
' (Nur für Probebetrieb, nach dem Scharfschalten auskommentieren.)
Else
Knopf = MsgBox(Prompt:="Werkt niet — Ne fonctionner pas" & vbNewLine _
& "Daten- und Urheberrechtsschutz" & vbNewLine _
& "Benutzerbeschränkung — Kein Zugriff", _
Buttons:=vbOKOnly, _
Title:="Fichier confidentiel — Secrets des données")
If Knopf = vbOK Then
On Error Resume Next
Application.DisplayAlerts = False
wb.Close
Application.DisplayAlerts = True
On Error GoTo 0
End If
End If
' Wenn Benutzerkontrolle erfolgreich, Tabelle1 aktivieren
Set wb = Workbooks("Benutzerkontrolle_6.xls")
Set ws = wb.Worksheets("Tabelle1")
ws.Activate
End Sub
Mein Wunsch : in der Zeile > zwischen den Semikola die Klarnamen durch Folgen aus Chr(*) ersetzen. - - - Geringste Form des Schutzes, damit der Knacker wenigstens Mühe hat, die Klarnamen wieder herzustellen.
Die Benutzernamen enthalten das Leerzeichen [Chr(32)]. Damit muß ich arbeiten.
vorgearbeitet:
Anton Aal = in Chr = 65 110 116 111 110 32 65 97 108
Berta Barbe = in Chr = 66 101 114 116 97 32 66 97 114 98 101
Dora Dorsch = in Chr = 68 111 114 97 32 68 111 114 115 99 104
Was ich bei der Ersetzung auch versucht habe, Hochkommata an der gesamten Zeichenfolge oder einzeln, mit und ohne Verkettungszeichen ("&" oder, veraltet, "+"), mit und ohne Klammern - ich schaffe es nicht.
Wer kann mit der richtigen Syntax weiterhelfen - oder mich auf die Spur bringen, wo mein Denkfehler liegt?
Freundliche Grüße,
Obg67.

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Beispiel-UDFs: Text als ASCII de-/codieren und vs.
30.12.2011 00:12:27
NoNet
Hallo Ogb,
Du könntest zum "Entschlüsseln" (Decodieren) der als ASCII angegebenen Namen eine kleine UDF verwenden -
hier im Beispiel die Function ASCII2CHAR() .
Option Explicit
Public cAllowedUser As String
Sub TesteCodiertesArray()
cAllowedUser = TestNamen()
MsgBox TestNamen
End Sub
Function TestNamen()
Dim lngN As Long, strT As String, arrASCII
'Decodiert die Namen "Anton Aal", "Berta Barbe ", "Dora Dorsch"
'und verbindet diese mit einem Semikolon
arrASCII = Array("65 110 116 111 110 32 65 97 108", _
"66 101 114 116 97 32 66 97 114 98 101", _
"68 111 114 97 32 68 111 114 115 99 104")
For lngN = LBound(arrASCII) To UBound(arrASCII)
strT = strT & ASCII2Char(arrASCII(lngN)) & ";"
Next
TestNamen = strT
End Function
Function ASCII2Char(ByVal strASCII As String)
'Wandelt eine Folge von ASCII-Zeichen in Text (Characters) um
'ASCII-Zeichen müssen durch Leerzeichen getrennt sein
Dim lngZ As Long, strT As String, arrA
'ASCII-Codes per Leerzeichen getrennt in ARRAY speichern
arrA = Split(strASCII, " ")
For lngZ = LBound(arrA) To UBound(arrA)
strT = strT & Chr(arrA(lngZ))
Next
ASCII2Char = strT
End Functio
In diesem Code wird cAllowedUser als öffentliche Variable (und nicht per CONST) deklariert.
Im Sub TesteCodiertesArray() wird dieser Variablen der Wert der UDF TestNamen() zugewiesen, in der die Namen bereits als ASCII codiert vorliegen.
Die UDF TestNamen() wiederum entschlüsselt jeden einzelnen Namen (ARRAY-Element) per UDF ASCII2CHAR().
Starte enfach nur mal die Sub TesteCodiertesArray() und schau wasangezeigt wird !


Nur als Ergänzung : Die Umkehrfunktion von ASCII2CHAR() zum Codieren der Namen als ASCII :
Function Char2ASCII(ByVal strChar As String)
'Wandelt einen Text (Characters) in eine Folge von ASCII-Zeichen um
'ASCII-Zeichen werden durch Leerzeichen getrennt
'Umkehrfunktion von ASCII2CHAR()
Dim lngZ As Long, strT As String
For lngZ = 1 To Len(strChar)
strT = strT & Asc(Mid(strChar, lngZ, 1)) & " "
Next
Char2ASCII = strT
End Function
Gruß, NoNet
Anzeige
AW: Beispiel-UDFs: Text als ASCII de-/codieren und vs.
31.12.2011 22:32:19
Obg67
Hallo NoNet,
herzlichen Dank, funktioniert perfekt.
Und ich hatte gewähnt, man könnte für "Berta Barbe" einfach = ";Anton Aal;Chr(1), Chr(2), Chr(3);Dora Dorsch; " schreiben.
Freundliche Grüße und alles Gute im neuen Jahr,
Obg67.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige