Тема регулярно всплывает и тонет ввиду долгого отсутствия решения.
Напоминаю для тех, кто не в курсе.
Если, работая под Вистой, перед копированием из VBE текста, содержащего кириллицу, не переключить раскладку клавиатуры в RUS, то после вставки в ответ форума (или в "блокнот") получим не читаемые "кракозябры" (см. приаттаченный пример)
Для расшифровки кириллицы, искалеченной в вид типа
Ýòà ä
KukLP написал (а я как всегда "дополировал" :) UDF:
Function TransNumberASC(s$) As String '
Dim Arr, i%
Arr = Split(Replace(Replace(s, "", ";"), ";;", ";"), ";")
On Error Resume Next
For i = 0 To UBound(Arr) - 1
If Left(Arr(i), 2) = "" And Len(Arr(i)) = 5 And IsNumeric(Right(Arr(i), 3)) Then
Arr(i) = Chr(CInt(Right(Arr(i), 3)))
End If
Next
TransNumberASC = Join(Arr, "")
End Function
Казанский там же предложил VB-скрипт, расшифровывающий искалеченные в такой же вид тексты:
Dim s, s1, v, i, x
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
'MSForms.dataobject,
.GetFromClipboard
s = .GetText
End With
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = "(\d\d\d;)"
Set v = .Execute(s)
End With
For Each x In v
s1 = s1 & Mid(s, i + 1, x.FirstIndex - i) & Chr(CLng(Mid(x, 3, 3)))
i = x.FirstIndex + x.Length
Next
s1 = s1 & Mid(s, i + 1)
MsgBox s1
К сожалению, на других форумах (например, в Миру у Сержа-007) кириллица вставляется в пост в том же виде, как здесь выглядит в окне ввода - "кракозябрами".
Это здесь не отобразится (т.к. преобразуется в посте в последовательность типа Ýòà ä), но посмотреть образец можно на:
При этом никаких разделителей не видно, а все символы после вставки в Ёксель имеют одинаковый КОДСИМВ() = 63 ...
Так что проблема расшифровки кириллицы, искажённой так, как в третьем образце примера, так и осталась не полностью решенной
Напоминаю для тех, кто не в курсе.
Если, работая под Вистой, перед копированием из VBE текста, содержащего кириллицу, не переключить раскладку клавиатуры в RUS, то после вставки в ответ форума (или в "блокнот") получим не читаемые "кракозябры" (см. приаттаченный пример)
Для расшифровки кириллицы, искалеченной в вид типа
Ýòà ä
KukLP написал (а я как всегда "дополировал" :) UDF:
Function TransNumberASC(s$) As String '
Dim Arr, i%
Arr = Split(Replace(Replace(s, "", ";"), ";;", ";"), ";")
On Error Resume Next
For i = 0 To UBound(Arr) - 1
If Left(Arr(i), 2) = "" And Len(Arr(i)) = 5 And IsNumeric(Right(Arr(i), 3)) Then
Arr(i) = Chr(CInt(Right(Arr(i), 3)))
End If
Next
TransNumberASC = Join(Arr, "")
End Function
Казанский там же предложил VB-скрипт, расшифровывающий искалеченные в такой же вид тексты:
Dim s, s1, v, i, x
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
'MSForms.dataobject,
.GetFromClipboard
s = .GetText
End With
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = "(\d\d\d;)"
Set v = .Execute(s)
End With
For Each x In v
s1 = s1 & Mid(s, i + 1, x.FirstIndex - i) & Chr(CLng(Mid(x, 3, 3)))
i = x.FirstIndex + x.Length
Next
s1 = s1 & Mid(s, i + 1)
MsgBox s1
К сожалению, на других форумах (например, в Миру у Сержа-007) кириллица вставляется в пост в том же виде, как здесь выглядит в окне ввода - "кракозябрами".
Это здесь не отобразится (т.к. преобразуется в посте в последовательность типа Ýòà ä), но посмотреть образец можно на:
При этом никаких разделителей не видно, а все символы после вставки в Ёксель имеют одинаковый КОДСИМВ() = 63 ...
Так что проблема расшифровки кириллицы, искажённой так, как в третьем образце примера, так и осталась не полностью решенной
С уважением, Алексей