Текст на иврите в коде VBA не декодируется должным образом

Я разработал рабочую книгу с некоторым базовым кодом VBA. Рабочая книга написана на иврите, и в коде vba также используется иврит, например, для сравнения строк на иврите или для доступа к таблицам с использованием их ивритских имен. Я разработал эту книгу в Excel 2010 и сохранил ее в виде файла xlsm (макрос включен). Все это очень хорошо работает на разных компьютерах и в версиях Excel, за исключением определенного компьютера, на котором установлен Excel 2007. Кажется, проблема в том, что строки на иврите, которые я использовал в коде vba, не декодируются должным образом и воспринимаются как Gibberish. Текст на иврите внутри самой книги (т. Е. Ячейки или имена листов) в порядке, только текст, который я использовал в самом коде VBA, кажется, не читается должным образом. Что я хотел бы сделать, это автоматически установить правильное кодирование / декодирование после открытия рабочей книги, чтобы ее можно было использовать на любом компьютере с любой версией Excel.

Прочитав еще несколько здесь и здесь, я понимаю, что это происходит, когда системный язык не на иврите. Могу ли я динамически установить его только в Excel, используя код vba (т.е. не меняя его на уровне операционной системы), чтобы текст на иврите, который я написал, работал? В противном случае мне нужно будет удалить весь текст на иврите из кода VBA.

1 ответ

Используйте следующую функцию из ADODB Stream (вам нужно обратиться к последней библиотеке объектов данных Microsoft ActiveX)

Public Function CorrectHebrew(gibberish As String) As String

    Dim inStream As ADODB.stream

    Set inStream = New ADODB.stream
    inStream.Open
    inStream.Charset = "WIndows-1255"
    inStream.WriteText gibberish
    inStream.Position = 0
    inStream.Charset = "UTF-8"
    CorrectHebrew = inStream.ReadText
    inStream.Close
End Function    
Другие вопросы по тегам