Hi - I don't want to cut across any reply the Flee guys might have, but I had to do a similar thing - so users could refer to data items with nice readable names including dashes, brackets and all sorts of 'banned' characters.
I have a class defining each of my variables which contains amongst other things...
MyClass.VarName = VariableName
MyClass.VarGUID = "var_" & Guid.NewGuid.ToString.Replace("-", "")
Select Case VariableType
Case "String" : MyClass.VarSystemType = GetType(String)
So, my variable "DG Repeat Test 1.Inp-Account Status" becomes referred to as var_55578b92a5c84b2598a67527afd11833.
I then have simple lookup functions to find name & type info at run-time, and all expression functions occur using the var_GUID name.
Works a treat and is very fast & flexible.
Hope this gives some help.