カスタム検索
リボン関連

ユーザーインターフェイス言語によってリボンを変更する

今回はOfficeアプリケーションのユーザーインターフェイス言語によってリボンを変更する方法を紹介します。

 

[標準モジュール]

Option Explicit

Public Sub tab_getLabel(control As IRibbonControl, ByRef returnedVal)
  Select Case GetLanguageID
    Case 1033
      returnedVal = "My Tab"
    Case 1041
      returnedVal = "私のタブ"
  End Select
End Sub

Public Sub group_getLabel(control As IRibbonControl, ByRef returnedVal)
  Select Case GetLanguageID
    Case 1033
      returnedVal = "My Group"
    Case 1041
      returnedVal = "私のグループ"
  End Select
End Sub

Public Sub button_getLabel(control As IRibbonControl, ByRef returnedVal)
  Select Case GetLanguageID
    Case 1033
      returnedVal = "My Button"
    Case 1041
      returnedVal = "私のボタン"
  End Select
End Sub

Public Sub button_getImage(control As IRibbonControl, ByRef returnedVal)
  Select Case GetLanguageID
    Case 1033
      returnedVal = "MicrosoftExcel"
    Case 1041
      returnedVal = "MicrosoftPowerPoint"
  End Select
End Sub

Public Sub button_onAction(control As IRibbonControl)
  Select Case GetLanguageID
    Case 1033
      Proc1033
    Case 1041
      Proc1041
  End Select
End Sub

Private Sub Proc1033()
'ロケールID:1033(英語(U.S.))用
  MsgBox "What's up?"
End Sub

Private Sub Proc1041()
'ロケールID:1041(日本語)用
  MsgBox "最近調子はどう?"
End Sub

Private Function GetLanguageID() As Long
'ユーザーインターフェイス言語取得
  GetLanguageID = Application.LanguageSettings.LanguageID(msoLanguageIDUI)
End Function

 

※ リボンXMLの編集方法については「Office 2010対応Custom UI Editor Tool のインストール・使用方法」「Office Ribbon Editorの紹介」「SharpDevelopでリボンXMLを編集する」等のページを参照してください。

 

[リボンXML]

<?xml version="1.0" encoding="utf-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <ribbon>
    <tabs>
      <tab id="myTab" getLabel="tab_getLabel">
        <group id="myGroup" getLabel="group_getLabel">
          <button id="myButton" getLabel="button_getLabel" size="large" getImage="button_getImage" onAction="button_onAction" />
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

 

Sponsored Links

 

上記のように"LanguageSettings.LanguageID"プロパティからユーザーインターフェイス言語やインストール言語を取得し、"get…"系のコールバック関数で処理を切り分けることで、リボンの見た目を変更することができます。
複数の言語環境でファイルを実行する可能性がある場合には使えるテクニックだと思います。