在VBA中获取非unicode程序的语言

时间:2017-09-23 19:41:10

标签: vba

如何使用VBA以编程方式获取“控制面板区域设置”中“非Unicode程序的语言”的值?

我的VBA代码包含西里尔语常量,如果非unicode程序的语言不是俄语,则会出现乱码,因此我建议用户在尝试使用该应用程序之前更改设置。

有关C#

的类似问题,请参阅Getting Language for Non-Unicode Programs

1 个答案:

答案 0 :(得分:0)

Public Declare Function GetACP Lib "kernel32" () As Long

Sub CheckANSICodePage()
    If GetACP() <> 1252 Then
        MsgBox "This application requires 'Language for non-Unicode programs' to be set to English " & _
               "in the Control Panel and will not function properly otherwise." & vbCrLf & _
                vbCrLf & _
                "Press OK to exit.", vbCritical + vbOKOnly, "MyApp"
        ActiveWorkbook.Close SaveChanges:=False
    End If
End Sub

来自 Windows应用程序国际化NLS Terminology页面:

  

ANSI应用程序应在安装期间检查非Unicode程序设置的语言。它使用 GetACP GetOEMCP 来检索值。不支持为非Unicode程序设置语言的功能。

GetACP函数返回"ANSI code page"(例如英语为1252),而GetOEMCP返回“OEM代码页”(控制台中使用的代码页,英语为437)

Code Pages提供了有关Windows中代码页的更多信息。