我开发了一个工作簿,其中包含一些基础vba代码。该工作簿是希伯来语,vba代码也使用希伯来语,例如比较希伯来语中的字符串,或使用希伯来语名称访问表格。我在Excel 2010中开发了这个工作簿,并将其保存为xlsm文件(启用宏)。它在各种机器和excel版本上都能很好地工作,除了某台安装了excel 2007的电脑。问题似乎是我在vba代码中使用的希伯来字符串没有被正确解码,并被视为胡言乱语。工作簿本身内的希伯来文本(即单元格或工作表名称)非常精细,只有我在VBA代码中使用的文本似乎没有被正确读取。 我想要做的是在打开工作簿后自动设置编码/解码,以便可以在任何机器上使用任何excel版本。
在阅读了更多here和here之后,我意识到当系统区域设置不是希伯来语时会发生这种情况。我是否可以使用vba代码在Excel中动态设置它(即不在操作系统级别更改它),以便我写的希伯来文本可以工作?否则,我需要从vba代码中删除所有希伯来语文本。
答案 0 :(得分:0)
使用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