Office関連

[リボン・カスタマイズ]アクティブシートにより表示するグループを切り替える。

Excelで、選択しているシートによって表示するグループを切り替えたいという質問をいただきましたので処理を考えてみました。

リボンXML:

<?xml version="1.0" encoding="utf-8"?>
<customUI onLoad="ThisWorkbook.Ribbon_onLoad" xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <ribbon>
    <tabs>
      <tab id="tabSample" label="Sample Tab">
        <group id="grpSample1" label="Sample Group1" getVisible="ThisWorkbook.group_getVisible" tag="1">
          <button id="btnSample1" label="Sample Button1" size="large" imageMso="HappyFace" />
          <button id="btnSample2" label="Sample Button2" size="large" imageMso="HappyFace" />
          <button id="btnSample3" label="Sample Button3" size="large" imageMso="HappyFace" />
        </group>
      <group id="grpSample2" label="Sample Group2" getVisible="ThisWorkbook.group_getVisible" tag="2">
          <button id="btnSample4" label="Sample Button4" size="large" imageMso="SadFace" />
          <button id="btnSample5" label="Sample Button5" size="large" imageMso="SadFace" />
          <button id="btnSample6" label="Sample Button6" size="large" imageMso="SadFace" />
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

VBAコード(ThisWorkbook):

Option Explicit

Private myRibbon As Office.IRibbonUI
Private flg(1 To 2) As Boolean

Public Sub Ribbon_onLoad(ribbon As IRibbonUI)
  Set myRibbon = ribbon
  Select Case LCase$(ActiveWorkbook.ActiveSheet.Name)
    Case "sheet1"
      flg(1) = True
      flg(2) = False
    Case "sheet2"
      flg(1) = False
      flg(2) = True
    Case Else
      flg(1) = True
      flg(2) = True
  End Select
End Sub

Public Sub group_getVisible(control As IRibbonControl, ByRef returnedVal)
  returnedVal = flg(CLng(control.Tag))
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  Select Case LCase$(Sh.Name)
    Case "sheet1"
      flg(1) = True
      flg(2) = False
    Case "sheet2"
      flg(1) = False
      flg(2) = True
    Case Else
      flg(1) = True
      flg(2) = True
  End Select
  myRibbon.Invalidate
End Sub

上記コードでは、Sheet1が選択されているときは”grpSample1“が、Sheet2が選択されているときは”grpSample2“、それ以外のシートの時は”grpSample1“と”grpSample2“の両方が表示されるよう、getVisible属性のコールバックを設定しています。
アクティブシートに限らず、何らかの条件でリボンのコントロールを切り替えたい場合には便利な処理だと思います。

Google Noseで表示される香りをまとめてみました。前のページ

マクロでリボンを最小化する。次のページ

関連記事

  1. Office関連

    「Excel VBAの神様 ボクの人生を変えてくれた人」(大村あつし著)レビュー

    ※ 下記レビューはあくまでも個人的な感想です。2015年9…

  2. Office関連

    [Excel 2013]Web関数を使ってマッシュアップ

    以前書いた記事「Excel 2013で追加された「WEBSERVICE…

  3. Office関連

    「いちばんやさしいPowerPoint VBAの教本」レビュー

    「インストラクターのネタ帳」で有名な伊藤さんが執筆された書籍第二弾、「…

  4. Office関連

    代替テキストを削除するPowerPointマクロ

    PowerPointの図やSmartArt、グループやグラフといった視…

  5. Office関連

    オデッセイ コミュニケーションズ主催のWord活用無料セミナーに参加しました。

    Club Microsoft会員限定、オデッセイ コミュニケーションズ…

コメント

    • あくしず
    • 2013年 4月 12日 3:03pm

    GetVisibleではアイコンがノーマル/モノクロの制御に成るのですか?ボタン動作としては有効になるのでしょうね。この様な情報は何処で手に入るのでしょうか?私の場合はきぬあささんだけが頼りです!

    Excel-PowerPoint連携のシステムを作った時にはブログ1ページだけが頼りでしたので、大変でした。

  1. > あくしず様

    getEnabled属性はコントロールの有効・無効を動的に設定するもので、falseにした場合でもグレー表示にはなりますが、画面上表示はされます。
    それに対してgetVisible属性は文字通りコントロールの表示・非表示を動的に設定するもので、falseにした場合は表示そのものがされなくなります。
    これらの属性は状況に応じて使い分けるのが良いだろうと思います。

    > この様な情報は何処で手に入るのでしょうか?私の場合はきぬあささんだけが頼りです!

    基本的には下記Webページで紹介しているようなMicrosoftのページを参考にしています。

    ・リボン関連のリンク
    http://www.ka-net.org/ribbon/link.html

    おおまかなところは下記からダウンロードできる「[MS-CUSTOMUI].pdf」と「[MS-CUSTOMUI2].pdf」で把握できます。

    ・[MS-CUSTOMUI]: Custom UI XML Markup Specification
    http://msdn.microsoft.com/en-us/library/cc313070%28office.12%29.aspx
    ・[MS-CUSTOMUI2]: Custom UI XML Markup Version 2 Specification
    http://msdn.microsoft.com/en-us/library/dd909370%28office.12%29.aspx

    XML編集にあたっては下記からダウンロードできるXML Schemaも利用しています。

    ・Download details: 2007 Office System: XML Schema Reference
    http://www.microsoft.com/en-us/download/details.aspx?id=4463
    ・Download details: Office 2010 Reference: Office Fluent User Interface XML Schema
    http://www.microsoft.com/en-us/download/details.aspx?id=1574

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP