(VSTO Outlook idMso Customize Ribbon TabMail GroupMailNew)
新規にカスタムリボンをOfficeアプリに追加する場合には、リボンの追加をします。
そうではなく、元々あるタブにボタンの追加など行うこともできます。
新規作成の横にグループを追加
グループ追加イメージ
Ribbon1.cs
public string GetCustomUI(string ribbonID) { if (ribbonID == "Microsoft.Outlook.Explorer") { return GetResourceText("OutlookAddIn.Ribbon1.xml"); } return ""; }
Ribbon1.xml
<ribbon> <tabs> <tab idMso="TabMail"> <group id="MyGroup" insertAfterMso="GroupMailNew" label="MyGroup" autoScale="true"> <button id="MyButton" label="ボタン" size="large" onAction="RibbonTest"/> <button id="MyButton2" label="ボタン2" size="large" onAction="RibbonTest"/> </group> </tab> </tabs> </ribbon>
ここで大事なのが、idMsoです。
idMsoは、Officeアプリの中でユニークなオブジェクトIDです。Officeアプリの中では、idMsoによって動き(挙動、表示箇所、アイコンなど)が決められています。
<tab idMso="TabMail">
と指定しているので、タブの中に記述したGroupやその中のButtonがOutlookのホームタブに表示されるようになります。
Outlookに表示される内容は、元々のタブメニュー + XMLで記述したタブになります。
MyGroupが新規作成の隣に来ているのは、insertAfterMsoを指定しているためです。
リファレンスを見ると
insertAfterMso:後に挿入するビルトイン コントロールの ID。InsertBeforeMso、InsertAfterQ、InsertBeforeQ とは相互排他的関係。
となっています。指定したidMsoのあとに表示されますってこと。
逆に、指定したidMsoの前に表示させたい場合には、insertBeforeMsoを使います。
idMsoの値の一覧はMSからダウンロードできます。
Download Office 2013 Help Files: Office Fluent User Interface Control Identifiers from Official Microsoft Download Center
※Outlookにかぎらず拡張可能なすべてのOfficeアプリのidMsoが載っています。