【问题标题】:Hebrew text in vba code doesn't decode properlyvba 代码中的希伯来语文本无法正确解码
【发布时间】:2014-01-21 22:13:24
【问题描述】:

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

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

【问题讨论】:

    标签: excel vba encoding hebrew mojibake


    【解决方案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    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-23
      • 1970-01-01
      • 1970-01-01
      • 2015-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-05
      相关资源
      最近更新 更多