Здесь вы меняете положение символов, и, вероятно, поэтому оно работает неправильно:
Str = Replace$(Str, Mid$(xChars, I, 1), "")
Попробуйте этот код:
Public Function RemoveAllSpecialCharacters(inString As String) As String
Const SpecialCharacters As String = "!,@,#,$,%,^,&,*,(,),{,[,],},-,/,_,;,',?,+,=,.,~,`, ,€"
Dim newString As String
Dim Char As Variant
newString = inString
For Each Char In Split(SpecialCharacters, ",")
newString = Replace(newString, Char, "")
Next
newString = Replace(newString, ",", "")
newString = Replace(newString, Chr(13), "")
newString = Replace(newString, Chr(10), "")
RemoveAllSpecialCharacters = Trim(newString)
End Function