找到当前的用户语言

Bet*_*ide 15 excel vba excel-vba excel-2010

如何在程序中告知当前的用户语言?

我需要这个以适当的语言显示一个表单.

bre*_*tdj 15

我的初始代码(使用此vbforum代码)假设Windows和Excel共享一种通用语言 - 可能但不是防弹.

更新

修订后的代码:

  1. 返回区域设置ID(LCID).
  2. 从这个msft链接查找LCID .
  3. 使用正则解析LCID 以获取语言.

我的机器下面的示例输出

代码将让用户知道访问LCID网站或解析国家/地区名称时是否有任何错误.

在此输入图像描述

    Sub GetXlLang()
        Dim lngCode As Long
        lngCode = Application.LanguageSettings.LanguageID(msoLanguageIDUI)
        MsgBox "Code is: " & lngCode & vbNewLine & GetTxt(lngCode)
    End Sub

    Function GetTxt(ByVal lngCode) As String
        Dim objXmlHTTP As Object
        Dim objRegex As Object
        Dim objRegMC As Object
        Dim strResponse As String
        Dim strSite As String

        Set objXmlHTTP = CreateObject("MSXML2.XMLHTTP")
        strSite = "http://msdn.microsoft.com/en-us/goglobal/bb964664"

        On Error GoTo ErrHandler
        With objXmlHTTP
            .Open "GET", strSite, False
            .Send
            If .Status = 200 Then strResponse = .ResponseText
        End With
        On Error GoTo 0

        strResponse = Replace(strResponse, "</td><td>", vbNullString)
        Set objRegex = CreateObject("vbscript.regexp")
        With objRegex
            .Pattern = "><td>([a-zA-Z- ]+)[A-Fa-f0-9]{4}" & lngCode                    
            If .Test(strResponse) Then
                Set objRegMC = .Execute(strResponse)
                GetTxt = objRegMC(0).submatches(0)
            Else
                GetTxt = "Value not found from " & strSite
            End If
        End With
        Set objRegex = Nothing
        Set objXmlHTTP = Nothing
        Exit Function
ErrHandler:
        If Not objXmlHTTP Is Nothing Then Set objXmlHTTP = Nothing
        GetTxt = strSite & " unable to be accessed"
    End Function
Run Code Online (Sandbox Code Playgroud)


GSe*_*erg 11

dim lang_code as long
lang_code = Application.LanguageSettings.LanguageID(msoLanguageIDUI)
Run Code Online (Sandbox Code Playgroud)

  • 你可以在这里找到一个LCID列表http://msdn.microsoft.com/en-us/goglobal/bb964664 (7认同)