Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Борьба с "кракозябрами" в VISTA и Win-7 - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Борьба с "кракозябрами" в VISTA и Win-7
Alex_ST Дата: Понедельник, 06.06.2011, 11:54 | Сообщение № 1
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3214
Репутация: 615 ±
Замечаний: 0% ±

2003
Многие, а особенно - участники форумов, знают о баге работы буфера обмена в VISTA и Win-7: если скопировать в буфер обмена текст, содержащий символы кириллицы, не переключив перед копированием раскладку клавиатуры в RUS, то после вставки скопированного текста в ответ форума или "блокнот" вместо кириллических букв будут "кракозябры" типа:
Äîïîëíèòåëüíûå ñâåäåíèÿ ñì. â çàìåòêàõ î âûïóñêå

Для того, чтобы прочесть "сглюченный" таким образом текст, разработана функция пользователя:
[vba]
Код
Function ПОЧИНИТЬ_КИРИЛЛИЦУ(ГЛЮК$)
         '---------------------------------------------------------------------------------------
         ' Procedure    : ПОЧИНИТЬ_КИРИЛЛИЦУ
         ' Author       : The_Prist & Alex_ST
         ' DateTime     : 29.04.11, 09:52
         ' Topic_HEADER : Как прочесть "кракозябры", получаемые после копирования-вставки кириллицы из Висты?
         ' Topic_URL    : http://www.planetaexcel.ru/forum.php?thread_id=26894
         ' Purpose      : правит глюки типа Ýòà äîë и другие "кракозябры" после вставки кириллицы из Vista
         ' Notes        :
         '---------------------------------------------------------------------------------------
         Dim Arr, i%, sTxt$, sSymb$
         'ГЛЮК = Replace(ГЛЮК, "&#", ";&#"): ГЛЮК = Replace(ГЛЮК, ";;", ";"):Arr = Split(ГЛЮК, ";")
         Arr = Split(Replace(Replace(ГЛЮК, "&#", ";&#"), ";;", ";"), ";")
         If UBound(Arr) > LBound(Arr) Then
            For i = LBound(Arr) To UBound(Arr)
               If Left(Arr(i), 2) = "&#" And IsNumeric(Mid(Arr(i), 3)) Then
                  Arr(i) = CInt(Replace(Arr(i), "&#", ""))
                  Arr(i) = Chr(IIf(Arr(i) > 256, Arr(i) - 848, Arr(i)))
               End If
            Next
            sTxt = Join(Arr, "")
         Else
            For i = 1 To Len(ГЛЮК)
               sSymb = Mid(ГЛЮК, i, 1)
               If AscW(sSymb) > 255 Then
                  sTxt = sTxt & sSymb
               Else
                  sTxt = sTxt & Chr(AscW(sSymb))
               End If
            Next i
         End If
         ПОЧИНИТЬ_КИРИЛЛИЦУ = sTxt
End Function
[/vba]

А для того, чтобы такие глюки не возникали при вашей работе, KukLP где-то нарыл следующий метод:
1. В папке system32 удаляем файл c_1252.nls
2. Там же делаем копию файла c_1251.nls и переименовываем её в c_1252.nls
3. Перезагружаемся.
Главная проблема - суметь удалить имеющийся файл c_1252.nls
Виста, маниакальная сволочь angry , не даёт это сделать даже администратору. А стать Full Admin я не сумел.
Зато по совету того же KukLP я попробовал удалить файл с помощью программы Unlocker - получилось!



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Понедельник, 06.06.2011, 12:24
 
Ответить
СообщениеМногие, а особенно - участники форумов, знают о баге работы буфера обмена в VISTA и Win-7: если скопировать в буфер обмена текст, содержащий символы кириллицы, не переключив перед копированием раскладку клавиатуры в RUS, то после вставки скопированного текста в ответ форума или "блокнот" вместо кириллических букв будут "кракозябры" типа:
Äîïîëíèòåëüíûå ñâåäåíèÿ ñì. â çàìåòêàõ î âûïóñêå

Для того, чтобы прочесть "сглюченный" таким образом текст, разработана функция пользователя:
[vba]
Код
Function ПОЧИНИТЬ_КИРИЛЛИЦУ(ГЛЮК$)
         '---------------------------------------------------------------------------------------
         ' Procedure    : ПОЧИНИТЬ_КИРИЛЛИЦУ
         ' Author       : The_Prist & Alex_ST
         ' DateTime     : 29.04.11, 09:52
         ' Topic_HEADER : Как прочесть "кракозябры", получаемые после копирования-вставки кириллицы из Висты?
         ' Topic_URL    : http://www.planetaexcel.ru/forum.php?thread_id=26894
         ' Purpose      : правит глюки типа Ýòà äîë и другие "кракозябры" после вставки кириллицы из Vista
         ' Notes        :
         '---------------------------------------------------------------------------------------
         Dim Arr, i%, sTxt$, sSymb$
         'ГЛЮК = Replace(ГЛЮК, "&#", ";&#"): ГЛЮК = Replace(ГЛЮК, ";;", ";"):Arr = Split(ГЛЮК, ";")
         Arr = Split(Replace(Replace(ГЛЮК, "&#", ";&#"), ";;", ";"), ";")
         If UBound(Arr) > LBound(Arr) Then
            For i = LBound(Arr) To UBound(Arr)
               If Left(Arr(i), 2) = "&#" And IsNumeric(Mid(Arr(i), 3)) Then
                  Arr(i) = CInt(Replace(Arr(i), "&#", ""))
                  Arr(i) = Chr(IIf(Arr(i) > 256, Arr(i) - 848, Arr(i)))
               End If
            Next
            sTxt = Join(Arr, "")
         Else
            For i = 1 To Len(ГЛЮК)
               sSymb = Mid(ГЛЮК, i, 1)
               If AscW(sSymb) > 255 Then
                  sTxt = sTxt & sSymb
               Else
                  sTxt = sTxt & Chr(AscW(sSymb))
               End If
            Next i
         End If
         ПОЧИНИТЬ_КИРИЛЛИЦУ = sTxt
End Function
[/vba]

А для того, чтобы такие глюки не возникали при вашей работе, KukLP где-то нарыл следующий метод:
1. В папке system32 удаляем файл c_1252.nls
2. Там же делаем копию файла c_1251.nls и переименовываем её в c_1252.nls
3. Перезагружаемся.
Главная проблема - суметь удалить имеющийся файл c_1252.nls
Виста, маниакальная сволочь angry , не даёт это сделать даже администратору. А стать Full Admin я не сумел.
Зато по совету того же KukLP я попробовал удалить файл с помощью программы Unlocker - получилось!

Автор - Alex_ST
Дата добавления - 06.06.2011 в 11:54
Alex_ST Дата: Вторник, 14.06.2011, 13:08 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3214
Репутация: 615 ±
Замечаний: 0% ±

2003
А ещё можно прямо на рабочем столе создать файл скрипта VBA (обычный текстовой файл с расширением .vbs), содержащий такой код:
[vba]
Код
    'берет текст из буфера обмена и выводит сообщение с исправленным текстом
      Dim GLUK, Arr, i, sTxt, sSymb
      With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
         .GetFromClipboard: GLUK = .GetText   ' получить значение из буфера обмена
      End With
      Arr = Split(Replace(Replace(GLUK, "&#", ";&#"), ";;", ";"), ";")
      If UBound(Arr) > LBound(Arr) Then
         For i = LBound(Arr) To UBound(Arr)
            If Left(Arr(i), 2) = "&#" And IsNumeric(Mid(Arr(i), 3)) Then
               Arr(i) = CInt(Replace(Arr(i), "&#", ""))
               If Arr(i) > 256 Then Arr(i) = Arr(i) - 848
               Arr(i) = Chr(Arr(i))
            End If
         Next
         sTxt = Join(Arr, "")
      Else
         For i = 1 To Len(GLUK)
            sSymb = Mid(GLUK, i, 1)
            If AscW(sSymb) > 255 Then
               sTxt = sTxt & sSymb
            Else
               sTxt = sTxt & Chr(AscW(sSymb))
            End If
         Next
      End If
      GLUK = InputBox("", "", sTxt)
[/vba]
тогда будет достаточно скопировать искалеченный текст в буфер обмена и два раза кликнуть по этому скрипту. Скрипт выведет InputBox с раскодированным текстом.
В приложенном примере переименуйте файл KRAROZYABER.VBS.txt в KRAROZYABER.VBS
Образцы искалеченных текстов для проверки скрипта и UDF - в .xls-файле
К сообщению приложен файл: _-___Vista-2-.xls (38.5 Kb) · KRAROZYABER.VBS.txt (0.9 Kb)



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Вторник, 14.06.2011, 13:11
 
Ответить
СообщениеА ещё можно прямо на рабочем столе создать файл скрипта VBA (обычный текстовой файл с расширением .vbs), содержащий такой код:
[vba]
Код
    'берет текст из буфера обмена и выводит сообщение с исправленным текстом
      Dim GLUK, Arr, i, sTxt, sSymb
      With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
         .GetFromClipboard: GLUK = .GetText   ' получить значение из буфера обмена
      End With
      Arr = Split(Replace(Replace(GLUK, "&#", ";&#"), ";;", ";"), ";")
      If UBound(Arr) > LBound(Arr) Then
         For i = LBound(Arr) To UBound(Arr)
            If Left(Arr(i), 2) = "&#" And IsNumeric(Mid(Arr(i), 3)) Then
               Arr(i) = CInt(Replace(Arr(i), "&#", ""))
               If Arr(i) > 256 Then Arr(i) = Arr(i) - 848
               Arr(i) = Chr(Arr(i))
            End If
         Next
         sTxt = Join(Arr, "")
      Else
         For i = 1 To Len(GLUK)
            sSymb = Mid(GLUK, i, 1)
            If AscW(sSymb) > 255 Then
               sTxt = sTxt & sSymb
            Else
               sTxt = sTxt & Chr(AscW(sSymb))
            End If
         Next
      End If
      GLUK = InputBox("", "", sTxt)
[/vba]
тогда будет достаточно скопировать искалеченный текст в буфер обмена и два раза кликнуть по этому скрипту. Скрипт выведет InputBox с раскодированным текстом.
В приложенном примере переименуйте файл KRAROZYABER.VBS.txt в KRAROZYABER.VBS
Образцы искалеченных текстов для проверки скрипта и UDF - в .xls-файле

Автор - Alex_ST
Дата добавления - 14.06.2011 в 13:08
Alex_ST Дата: Среда, 30.11.2011, 13:14 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3214
Репутация: 615 ±
Замечаний: 0% ±

2003
Блин! Эти микро-мягкие biggrin совсем мышей не ловят!
На работе поставил комп С ЛИЦЕНЗИОННОЙ Win7 Pro - те же проблемы с кракозябрами вместо кириллицы, что и появились с выходим Висты!
И тем же способом только и решаются
Quote (Alex_ST)
1. В папке system32 удаляем файл c_1252.nls
2. Там же делаем копию файла c_1251.nls и переименовываем её в c_1252.nls
3. Перезагружаемся.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеБлин! Эти микро-мягкие biggrin совсем мышей не ловят!
На работе поставил комп С ЛИЦЕНЗИОННОЙ Win7 Pro - те же проблемы с кракозябрами вместо кириллицы, что и появились с выходим Висты!
И тем же способом только и решаются
Quote (Alex_ST)
1. В папке system32 удаляем файл c_1252.nls
2. Там же делаем копию файла c_1251.nls и переименовываем её в c_1252.nls
3. Перезагружаемся.

Автор - Alex_ST
Дата добавления - 30.11.2011 в 13:14
nerv Дата: Среда, 30.11.2011, 21:29 | Сообщение № 4
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

Приветствую! Если правильно понял тему, то это подойдет (файл открывать текстовым редактором):

[vba]
Код
Public Function UTA(ByVal Str$) As String ' Unicode To ASCII
For i% = 1 To Len(Str)
       UTA = UTA & Chr(AscB(Mid(Str, i, 1)))
Next
End Function
[/vba]
К сообщению приложен файл: Function_Unicod.zip (0.4 Kb)


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba


Сообщение отредактировал nerv - Среда, 30.11.2011, 21:29
 
Ответить
СообщениеПриветствую! Если правильно понял тему, то это подойдет (файл открывать текстовым редактором):

[vba]
Код
Public Function UTA(ByVal Str$) As String ' Unicode To ASCII
For i% = 1 To Len(Str)
       UTA = UTA & Chr(AscB(Mid(Str, i, 1)))
Next
End Function
[/vba]

Автор - nerv
Дата добавления - 30.11.2011 в 21:29
light26 Дата: Среда, 30.11.2011, 23:10 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1352
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Quote (Alex_ST)
если скопировать в буфер обмена текст, содержащий символы кириллицы, не переключив перед копированием раскладку клавиатуры в RUS, то после вставки скопированного текста в ответ форума или "блокнот" вместо кириллических букв будут "кракозябры"

Извини, Алекс. При всем уважении, все мои попытки получить кракозябры, следуя твоим инструкциям, потерпели фиаско. Из буфера обмена упорно изымаются для вставки буквы в кирилице:
проии мтттмтт лывлддла аиалдд дав дылвадлдлащ
или мне для этого понятные слова писать нужно было )))


Я не волшебник. Я только учусь
 
Ответить
Сообщение
Quote (Alex_ST)
если скопировать в буфер обмена текст, содержащий символы кириллицы, не переключив перед копированием раскладку клавиатуры в RUS, то после вставки скопированного текста в ответ форума или "блокнот" вместо кириллических букв будут "кракозябры"

Извини, Алекс. При всем уважении, все мои попытки получить кракозябры, следуя твоим инструкциям, потерпели фиаско. Из буфера обмена упорно изымаются для вставки буквы в кирилице:
проии мтттмтт лывлддла аиалдд дав дылвадлдлащ
или мне для этого понятные слова писать нужно было )))

Автор - light26
Дата добавления - 30.11.2011 в 23:10
Alex_ST Дата: Понедельник, 05.12.2011, 11:21 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3214
Репутация: 615 ±
Замечаний: 0% ±

2003
Quote (light26)
все мои попытки получить кракозябры, следуя твоим инструкциям, потерпели фиаско

Вадим, вообще-то в топике обсуждался вопрос не как получить кракозябры, а как от них избавиться biggrin
Ну, а уж если они тебе зачем-то нужны, то это явно не сюда

Александр,
для меня, к счастью, борьба с глюками вставки кириллицы на всех компах с Vista и Win7 закончилась моей полной победой biggrin после замены c_1252.nls на c_1251.nls. При этом никакие ухищрения с реестром не помогали. А этот метод - с пол-пинка!
Поэтому натурный эксперимент поставить не могу.
Твой код, естественно, намного короче. И я нечто подобное, кажется, пробовал на начальных этапах борьбы. Но потом выяснилось, что существует ещё несколько разновидностей сглючивания кириллицы. И просто приведённый мною код лечит несколько разных типов встречающихся "зюклвок" вместо буковок: и настоящие "кракозябры" типа "Äîïîëíèòåëüíûå" , и наборы символов, начинающиеся на "&#", и что-то там ещё (я уже не помню, всё это обсуждалось на Планете в топике, на который я давал ссылку в комментариях к старт-топику.



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Понедельник, 05.12.2011, 15:04
 
Ответить
Сообщение
Quote (light26)
все мои попытки получить кракозябры, следуя твоим инструкциям, потерпели фиаско

Вадим, вообще-то в топике обсуждался вопрос не как получить кракозябры, а как от них избавиться biggrin
Ну, а уж если они тебе зачем-то нужны, то это явно не сюда

Александр,
для меня, к счастью, борьба с глюками вставки кириллицы на всех компах с Vista и Win7 закончилась моей полной победой biggrin после замены c_1252.nls на c_1251.nls. При этом никакие ухищрения с реестром не помогали. А этот метод - с пол-пинка!
Поэтому натурный эксперимент поставить не могу.
Твой код, естественно, намного короче. И я нечто подобное, кажется, пробовал на начальных этапах борьбы. Но потом выяснилось, что существует ещё несколько разновидностей сглючивания кириллицы. И просто приведённый мною код лечит несколько разных типов встречающихся "зюклвок" вместо буковок: и настоящие "кракозябры" типа "Äîïîëíèòåëüíûå" , и наборы символов, начинающиеся на "&#", и что-то там ещё (я уже не помню, всё это обсуждалось на Планете в топике, на который я давал ссылку в комментариях к старт-топику.

Автор - Alex_ST
Дата добавления - 05.12.2011 в 11:21
RAN Дата: Суббота, 17.12.2011, 22:53 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Предлагаю в первом посте все, что после кода сделать крупным и красным !
Ведь знал, что это здесь, а проглядел! Увидел после 3-х кратного скрола темы...
(залезал на всякий случай, хуже не будет, вдруг чего забыл) biggrin
Не знаю, насколько нать все коды, а это действенная вещь! (WINDOWS 7)


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеПредлагаю в первом посте все, что после кода сделать крупным и красным !
Ведь знал, что это здесь, а проглядел! Увидел после 3-х кратного скрола темы...
(залезал на всякий случай, хуже не будет, вдруг чего забыл) biggrin
Не знаю, насколько нать все коды, а это действенная вещь! (WINDOWS 7)

Автор - RAN
Дата добавления - 17.12.2011 в 22:53
Chieskela Дата: Суббота, 04.02.2012, 21:38 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Очень хорошая вещь придумана, удалил, скопировал, переименовал. Все получилось. В Win7 кстати этот глюк исправился и в VB6.5. Долго мучился, ничего не помогало. Теперь все работает. Огромное спасибо. biggrin cool


Все, что ни делается, к лучшему!!!
 
Ответить
СообщениеОчень хорошая вещь придумана, удалил, скопировал, переименовал. Все получилось. В Win7 кстати этот глюк исправился и в VB6.5. Долго мучился, ничего не помогало. Теперь все работает. Огромное спасибо. biggrin cool

Автор - Chieskela
Дата добавления - 04.02.2012 в 21:38
Alex_ST Дата: Суббота, 04.02.2012, 23:48 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3214
Репутация: 615 ±
Замечаний: 0% ±

2003
Quote (Chieskela)
Теперь все работает. Огромное спасибо.
Юзайте, получайте удовольствие smile А главное спасибо Серёге-KukLP, который это наковырял и поделился на Планете, но там топик "утонул" и забылся. А я у себя в "заначке" сохранил и здесь с народом поделился.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщение
Quote (Chieskela)
Теперь все работает. Огромное спасибо.
Юзайте, получайте удовольствие smile А главное спасибо Серёге-KukLP, который это наковырял и поделился на Планете, но там топик "утонул" и забылся. А я у себя в "заначке" сохранил и здесь с народом поделился.

Автор - Alex_ST
Дата добавления - 04.02.2012 в 23:48
Yuzhniy Дата: Вторник, 12.03.2013, 03:49 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

2007
а если все-таки сменить предварительно раскладку, можно забыть о "проблеме"?


Век живи - век учись.
 
Ответить
Сообщениеа если все-таки сменить предварительно раскладку, можно забыть о "проблеме"?

Автор - Yuzhniy
Дата добавления - 12.03.2013 в 03:49
Alex_ST Дата: Вторник, 12.03.2013, 10:01 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3214
Репутация: 615 ±
Замечаний: 0% ±

2003
Ну, если вам не трудно запомнить, что перед каждым копированием нужно переключаться в РУС, то кто же будет спорить?
ИМХО, намного проще один раз починить и навсегда забыть о раскладке.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеНу, если вам не трудно запомнить, что перед каждым копированием нужно переключаться в РУС, то кто же будет спорить?
ИМХО, намного проще один раз починить и навсегда забыть о раскладке.

Автор - Alex_ST
Дата добавления - 12.03.2013 в 10:01
KuklP Дата: Среда, 14.08.2013, 07:02 | Сообщение № 12
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Вот тут появилось что-то новое по вынь 7:
http://planetaexcel.ru/forum....e418932


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеВот тут появилось что-то новое по вынь 7:
http://planetaexcel.ru/forum....e418932

Автор - KuklP
Дата добавления - 14.08.2013 в 07:02
Alex_ST Дата: Четверг, 24.04.2014, 21:02 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3214
Репутация: 615 ±
Замечаний: 0% ±

2003
Ещё раз убедился в действенности метода с заменой c_1252.nls на c_1251.nls , описанной красным в первом посте.
После капитальной чисткой компа и всего вообще с помощью RegUtility 4, нашедшей кучу ошибок, вдруг появились давно забытые звери - кракозябры.
Нашёл свой пост. Заменил c_1252.nls на c_1251.nls. Перегрузился. СУПЕР! Спасибо Серёге-KukLP, нарывшему этот метод и мне, выложившему его здесь! :)



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеЕщё раз убедился в действенности метода с заменой c_1252.nls на c_1251.nls , описанной красным в первом посте.
После капитальной чисткой компа и всего вообще с помощью RegUtility 4, нашедшей кучу ошибок, вдруг появились давно забытые звери - кракозябры.
Нашёл свой пост. Заменил c_1252.nls на c_1251.nls. Перегрузился. СУПЕР! Спасибо Серёге-KukLP, нарывшему этот метод и мне, выложившему его здесь! :)

Автор - Alex_ST
Дата добавления - 24.04.2014 в 21:02
Rioran Дата: Вторник, 21.07.2015, 16:13 | Сообщение № 14
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Всем привет =)

Сделал своё решение, максимально простое, для экспресс перевода самых частых кракозябр. Просто положу его здесь для сравнения и ассортимента.

[vba]
Код
Function TranLet$(StrX$)
     ' Roman Rioran Voronov, 21.07.2015, voronov_rv@mail.ru
     ' Переводит кракозябры с кракозябрского на русский
     Dim ArrX() As Byte, i&, LenX&, Symbol As Byte
     ArrX = StrX
     LenX = Len(StrX)
     For i = 1 To LenX
         If ArrX(i * 2 - 1) = 0 Then
             Symbol = ArrX(i * 2 - 2)
             Select Case Symbol
                 Case 192 To 255, 168, 184
                     TranLet = TranLet & Chr(Symbol)
                 Case Else
                     TranLet = TranLet & Mid(StrX, i, 1)
             End Select
         Else
             TranLet = TranLet & Mid(StrX, i, 1)
         End If
     Next i
End Function
[/vba]
К сообщению приложен файл: Rio_TrLet.xlsb (17.1 Kb)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеВсем привет =)

Сделал своё решение, максимально простое, для экспресс перевода самых частых кракозябр. Просто положу его здесь для сравнения и ассортимента.

[vba]
Код
Function TranLet$(StrX$)
     ' Roman Rioran Voronov, 21.07.2015, voronov_rv@mail.ru
     ' Переводит кракозябры с кракозябрского на русский
     Dim ArrX() As Byte, i&, LenX&, Symbol As Byte
     ArrX = StrX
     LenX = Len(StrX)
     For i = 1 To LenX
         If ArrX(i * 2 - 1) = 0 Then
             Symbol = ArrX(i * 2 - 2)
             Select Case Symbol
                 Case 192 To 255, 168, 184
                     TranLet = TranLet & Chr(Symbol)
                 Case Else
                     TranLet = TranLet & Mid(StrX, i, 1)
             End Select
         Else
             TranLet = TranLet & Mid(StrX, i, 1)
         End If
     Next i
End Function
[/vba]

Автор - Rioran
Дата добавления - 21.07.2015 в 16:13
Alex_ST Дата: Среда, 21.10.2015, 12:52 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3214
Репутация: 615 ±
Замечаний: 0% ±

2003
Обновил домашний комп.
На Win-7 x64 , конечно, возникли "кракозябры".
Пошёл по привычному пути:
1. В папке system32 удаляем файл c_1252.nls
2. Там же делаем копию файла c_1251.nls и переименовываем её в c_1252.nls
3. Перезагружаемся.
Практически везде помогло.
Но когда вызвал командный режим, огорчился, т.к. вместо [vba]
Код
Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

C:\windows\system32>
[/vba]получил:
Вспомнил про то, что у меня ещё веляется и патч исправления кракозябр в реестре (файл Rus.reg привожу в открытом виде):[vba]
Код
REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1250"="c_1251.nls"
"1251"="c_1251.nls"
"1252"="c_1251.nls"
"1253"="c_1251.nls"
"1254"="c_1251.nls"
"1255"="c_1251.nls"
"437"="c_437.nls"
"866"="c_866.nls"
"ACP"="1251"
"OEMCP"="866"
"MACCP"="10007"
"OEMHAL"="vga866.fon"
[/vba]Пропатчил. Не помогло...
Явно надо где-то в системе другую кодовую страницу задать... Но где и как?
Есть идеи как новый комп "полирнуть"?
К сообщению приложен файл: 3298247.jpg (27.4 Kb)



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Среда, 21.10.2015, 12:55
 
Ответить
СообщениеОбновил домашний комп.
На Win-7 x64 , конечно, возникли "кракозябры".
Пошёл по привычному пути:
1. В папке system32 удаляем файл c_1252.nls
2. Там же делаем копию файла c_1251.nls и переименовываем её в c_1252.nls
3. Перезагружаемся.
Практически везде помогло.
Но когда вызвал командный режим, огорчился, т.к. вместо [vba]
Код
Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

C:\windows\system32>
[/vba]получил:
Вспомнил про то, что у меня ещё веляется и патч исправления кракозябр в реестре (файл Rus.reg привожу в открытом виде):[vba]
Код
REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1250"="c_1251.nls"
"1251"="c_1251.nls"
"1252"="c_1251.nls"
"1253"="c_1251.nls"
"1254"="c_1251.nls"
"1255"="c_1251.nls"
"437"="c_437.nls"
"866"="c_866.nls"
"ACP"="1251"
"OEMCP"="866"
"MACCP"="10007"
"OEMHAL"="vga866.fon"
[/vba]Пропатчил. Не помогло...
Явно надо где-то в системе другую кодовую страницу задать... Но где и как?
Есть идеи как новый комп "полирнуть"?

Автор - Alex_ST
Дата добавления - 21.10.2015 в 12:52
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!