Текст на иврите в коде 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