今回は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…"系のコールバック関数で処理を切り分けることで、リボンの見た目を変更することができます。
複数の言語環境でファイルを実行する可能性がある場合には使えるテクニックだと思います。