vba代码中的希伯来文本无法正确解码

时间:2014-01-21 22:13:24

标签: excel vba encoding hebrew mojibake

我开发了一个工作簿,其中包含一些基础vba代码。该工作簿是希伯来语,vba代码也使用希伯来语,例如比较希伯来语中的字符串,或使用希伯来语名称访问表格。我在Excel 2010中开发了这个工作簿,并将其保存为xlsm文件(启用宏)。它在各种机器和excel版本上都能很好地工作,除了某台安装了excel 2007的电脑。问题似乎是我在vba代码中使用的希伯来字符串没有被正确解码,并被视为胡言乱语。工作簿本身内的希伯来文本(即单元格或工作表名称)非常精细,只有我在VBA代码中使用的文本似乎没有被正确读取。 我想要做的是在打开工作簿后自动设置编码/解码,以便可以在任何机器上使用任何excel版本。

在阅读了更多herehere之后,我意识到当系统区域设置不是希伯来语时会发生这种情况。我是否可以使用vba代码在Excel中动态设置它(即不在操作系统级别更改它),以便我写的希伯来文本可以工作?否则,我需要从vba代码中删除所有希伯来语文本。

1 个答案:

答案 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