4

我开发了一个工作簿,带有一些底层的 vba 代码。工作簿使用希伯来语,vba 代码也使用希伯来语,例如比较希伯来语中的字符串,或使用其希伯来语名称访问表格。我在 Excel 2010 中开发了此工作簿,并将其保存为 xlsm 文件(启用宏)。它在各种机器和 excel 版本上都运行良好,除了在安装了 excel 2007 的某台电脑上。问题似乎是我在 vba 代码中使用的希伯来语字符串没有正确解码,并且被视为乱码。工作簿本身中的希伯来语文本(即单元格或工作表名称)非常好,只有我在 VBA 代码本身中使用的文本似乎无法正确阅读。我想做的是在打开工作簿后自动正确设置编码/解码,

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

4

1 回答 1

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    
于 2016-12-24T21:03:13.960 回答