2011-12-21 7 views

答えて

13

私の最初のコード(このvbforum codeを利用)は、WindowsとExcelが共通の言語を共有することを想定しました。

更新

改訂コード:

  1. は、ロケールID(LCID)を返します。
  2. このmsft linkからLCIDをルックアップします。
  3. を使用してLCIDを解析し、言語を取得します。

以下の私のマシン上のサンプル出力コードは、何らかのエラーがLCIDのウェブサイトにアクセスする際に、または国名を解析中である場合、ユーザーに知らせます。私はより一般的な `excel`は常に有益タグであるだけでなく、それが将来の検索が容易になり数える@brettdj

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_SNATIVELANGNAME =&H4をLOCALE_SISO639LANGNAME =&H59に置き換えました。 – BetaRide

+1

あなたは場所を特定した後に適切な言語を表示する方法について私を導くことができますか...あなたは異なるリソースファイルを持っている場合...どのようにこれらのファイルをExcelのVBAエディタで作るのですか???? –

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

ありがとう、それは動作します。しかし、私はちょうど番号を取得します。この数字が意味する実際の言葉をどのようにして知ることができますか? – BetaRide

+7

LCIDの一覧はこちらhttp://msdn.microsoft.com/en-us/goglobal/bb964664 –

関連する問題