¿Cómo puedo saber el idioma actual del usuario en un programa vba?Buscar el idioma actual del usuario
Necesito esto para mostrar un formulario en un idioma apropiado.
¿Cómo puedo saber el idioma actual del usuario en un programa vba?Buscar el idioma actual del usuario
Necesito esto para mostrar un formulario en un idioma apropiado.
Mi código inicial (la utilización de este vbforum code) supone que Windows y Excel comparten un lenguaje común - probable, pero no a prueba de balas.
actualizado
El código revisado:
Salida de ejemplo en mi máquina por debajo de
El código le permitirá al usuario saber si hay errores en el acceso al sitio web de LCID, o al analizar el nombre del país.
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
Muchas gracias. Hace lo que estaba buscando. Reemplacé a LOCALE_SNATIVELANGNAME = & H4 con LOCALE_SISO639LANGNAME = & H59 para obtener un valor independiente local. – BetaRide
¿Pueden las personas guiarme acerca de cómo mostrar el idioma apropiado después de identificar la ubicación ... si tiene diferentes archivos de recursos ... entonces, ¿cómo hacer estos archivos en el editor de VBA de Excel ... ??? –
dim lang_code as long
lang_code = Application.LanguageSettings.LanguageID(msoLanguageIDUI)
Gracias, eso funciona. Pero acabo de obtener un número. ¿Cómo puedo descubrir el lenguaje real que representan estos números? – BetaRide
Puede encontrar una lista de LCID aquí http://msdn.microsoft.com/en-us/goglobal/bb964664 –
@brettdj Creo que el más genérico 'excel' es siempre una etiqueta útil, así, ya que hace más fácil las búsquedas futuras. – Fionnuala