2011-12-21 15 views
12

मैं वर्तमान उपयोगकर्ता भाषा को प्रोग्राम में कैसे बता सकता हूं?वर्तमान उपयोगकर्ता भाषा खोजें

मुझे उचित भाषा में एक फॉर्म दिखाने के लिए इसकी आवश्यकता है।

+0

@brettdj मुझे लगता है अधिक सामान्य 'excel' हमेशा एक उपयोगी टैग के रूप में अच्छी तरह से है, क्योंकि यह बनाता है भविष्य की खोजों आसान। – Fionnuala

उत्तर

13

मेरे प्रारंभिक कोड (इस vbforum code उपयोग) ग्रहण Windows और एक्सेल एक ही भाषा बोलने कि - संभावना लेकिन बुलेटप्रूफ नहीं।

अद्यतन

संशोधित कोड:

  1. रिटर्न लोकेल आईडी (LCID)।
  2. इस msft link से एलसीआईडी ​​को देखता है।
  3. भाषा प्राप्त करने के लिए का उपयोग करके एलसीआईडी ​​को पार करता है। नीचे

    कोड मेरी मशीन पर

नमूना उत्पादन उपयोगकर्ता पता अगर वहाँ, या देश का नाम पार्स करने में LCID वेबसाइट तक पहुँचने में कोई त्रुटि है करने देगा।

enter image description here

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 
+1

बहुत बहुत धन्यवाद। यह वही करता है जो मैं ढूंढ रहा था। मैंने स्थानीय स्वतंत्र मूल्य प्राप्त करने के लिए LOCALE_SISO639LANGNAME = & H59 के साथ LOCALE_SNATIVELANGNAME = और H4 को प्रतिस्थापित किया। – BetaRide

+1

क्या आप लोग मुझे पहचानने के बाद उचित भाषा दिखाने के तरीके के बारे में मार्गदर्शन कर सकते हैं ... यदि आपके पास अलग-अलग संसाधन फ़ाइलें हैं ... तो इन फ़ाइलों को एक्सेल के वीबीए संपादक में कैसे बनाएं ... ??? –

9
dim lang_code as long 
lang_code = Application.LanguageSettings.LanguageID(msoLanguageIDUI) 
+0

धन्यवाद, यह काम करता है। लेकिन मुझे बस एक संख्या मिलती है। मैं इस वास्तविक संख्या को कैसे देख सकता हूं? – BetaRide

+7

आप यहां एलसीआईडी ​​की एक सूची पा सकते हैं http://msdn.microsoft.com/en-us/goglobal/bb964664 –

संबंधित मुद्दे