Làm cách nào để biết ngôn ngữ người dùng hiện tại trong chương trình vba?Tìm ngôn ngữ người dùng hiện tại
Tôi cần điều này để hiển thị biểu mẫu bằng ngôn ngữ thích hợp.
Làm cách nào để biết ngôn ngữ người dùng hiện tại trong chương trình vba?Tìm ngôn ngữ người dùng hiện tại
Tôi cần điều này để hiển thị biểu mẫu bằng ngôn ngữ thích hợp.
Mã ban đầu của tôi (sử dụng vbforum code) giả định rằng Windows và Excel có chung ngôn ngữ - có khả năng nhưng không chống đạn.
cập nhật
Mã sửa đổi:
Mẫu đầu ra trên máy tính của tôi dưới đây
Mã sẽ cho người dùng biết nếu có bất kỳ sai sót trong việc tiếp cận các trang web LCID, hoặc trong phân tích cú pháp tên quốc gia.
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
Cảm ơn rất nhiều. Nó làm những gì tôi đang tìm kiếm. Tôi đã thay thế LOCALE_SNATIVELANGNAME = & H4 bằng LOCALE_SISO639LANGNAME = & H59 để nhận giá trị độc lập tại địa phương. – BetaRide
Bạn có thể hướng dẫn tôi về cách hiển thị ngôn ngữ thích hợp sau khi xác định vị trí ... nếu bạn có các tệp tài nguyên khác nhau ... thì làm cách nào để tạo các tệp này trong trình soạn thảo VBA excel ... ??? –
dim lang_code as long
lang_code = Application.LanguageSettings.LanguageID(msoLanguageIDUI)
Cảm ơn, điều đó hoạt động. Nhưng tôi chỉ nhận được một số. Làm cách nào tôi có thể tìm ra ngôn ngữ thực mà con số này đại diện cho? – BetaRide
Bạn có thể tìm danh sách các LCID tại đây http://msdn.microsoft.com/en-us/goglobal/bb964664 –
@brettdj Tôi nghĩ sự chung chung hơn 'excel' luôn luôn là một thẻ hữu ích cũng như nó làm cho các tìm kiếm trong tương lai dễ dàng hơn. – Fionnuala