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

标签 excel vba encoding hebrew mojibake

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

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

最佳答案

使用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    

关于excel - vba 代码中的希伯来语文本无法正确解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21270164/

相关文章:

SQL 选择一行中的第一个值,然后将该值插入到另一列中

vba - VB 6 文本框中的大写字母

excel - 使用excel从特定字符中删除序列

vba - 通过编程将MS Word纸张大小设置为PostScript自定义页面大小

java - C++ 和 Java 编码

python - Sublime Text 3 控制台中的 Unicode 编码错误

使用特殊字符的 Java Restful 服务编码

Excel VBA : getting row of clicked button

Excel #NAME? IFNA 错误

VBA - 递归搜索文件夹并计算找到的文件中的值