如何使用VBA以编程方式获取“控制面板区域设置”中“非Unicode程序的语言”的值?
我的VBA代码包含西里尔语常量,如果非unicode程序的语言不是俄语,则会出现乱码,因此我建议用户在尝试使用该应用程序之前更改设置。
有关C#
的类似问题,请参阅Getting Language for Non-Unicode Programs答案 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中代码页的更多信息。