Office関連

[リボン・カスタマイズ]グループの表示・非表示をトグルボタンで切り替える。

数年前に書いた記事に下記コメントをいただきました。

Excelにて、リボン、ボタンではなく、リボン内の特定の「グループ」について表示/非表示をトグルボタンのクリック操作で行う場合のXMLコードを教えて下さい。

グループに限らず、リボン上の各要素の表示・非表示を動的に切り替えたい場合はgetVisible属性を使います。

また、表示状態をトグルボタンで設定したいとのことなので、toggleButton要素のgetPressed属性でボタンの押下状態を設定し、onAction属性でボタンをクリックした際の処理を設定します。

リボンXML

<?xml version="1.0" encoding="utf-8"?>
<customUI onLoad="rbnSample_onLoad" xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <ribbon>
    <tabs>
      <tab id="tabSample" label="Sample Tab">
        <group id="grpSample1" label="Group 1" getVisible="grpSample_getVisible">
          <button id="btnDummy1" label="Button 1" imageMso="HappyFace" size="large" />
          <button id="btnDummy2" label="Button 2" imageMso="HappyFace" size="large" />
          <button id="btnDummy3" label="Button 3" imageMso="HappyFace" size="large" />
          <button id="btnDummy4" label="Button 4" imageMso="HappyFace" size="large" />
        </group>
        <group id="grpSample2" label="Group 2">
          <toggleButton id="tglSample" label="表示・非表示切替" imageMso="HappyFace" size="large" supertip="グループの表示・非表示を切り替えます。" onAction="tglSample_onAction" getPressed="tglSample_getPressed" />
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

VBAコード(標準モジュール)

Option Explicit

Private myRibbon As Office.IRibbonUI
Private flg As Boolean

Public Sub rbnSample_onLoad(ribbon As IRibbonUI)
  Set myRibbon = ribbon
  flg = True
End Sub

Public Sub grpSample_getVisible(control As IRibbonControl, ByRef returnedVal)
  returnedVal = flg
End Sub

Public Sub tglSample_onAction(control As IRibbonControl, pressed As Boolean)
  flg = pressed
  myRibbon.InvalidateControl "grpSample1"
End Sub

Public Sub tglSample_getPressed(control As IRibbonControl, ByRef returnedVal)
  returnedVal = flg
End Sub

上記コードでは、トグルボタンが押下されている状態の時にはグループが表示され、解除されている状態のときは非表示になります。

明日ちゃんのセーラー服&花待ついばら めぐる春コラボプレゼントに当選しました!前のページ

Google Docs API v1を試してみました。次のページ

関連記事

  1. Office関連

    [VBA]DataObjectを使ったクリップボード操作が上手くいかない場合の対処法

    VBAマクロからクリップボードを操作する場合、定番となっているのがDa…

  2. Office関連

    ClosedXMLやEPPlusでExcelファイルを読み書きしてみた。

    今回の記事の発端は下記のQiita投稿。・Excelファイ…

  3. Office アドイン

    [Office用アプリ]JavaScript API for Officeのポスター

    JavaScript API for Officeのオブジェクト、メソ…

  4. Office アドイン

    [Office用アプリ]アプリ開発コンテスト・受賞者発表

    以前書いた記事でお知らせしていた「Apps for Office アプ…

  5. Office関連

    Re: 【Wordマクロ】Word起動時に、前回終了時に開いていたファイルを表示

    Word MVPの新田さんがブログで面白い記事を書かれていました。…

  6. Office関連

    プログラムのソースコードを別の言語に変換するVBAマクロ

    SharpDevelopが公開している、ソースコードを変換するAPI「…

コメント

  • コメント (5)

  • トラックバックは利用できません。

  1. きぬあさ様
    早速ご対応下さりありがとうございます!!

    これから実際にやってみます。
    また不明点が発生しましたら質問させて頂きます。
    そのせつはどうぞよろしくお願い致します。

  2. きぬあさ様

    無事にやりたいことができました。
    ありがとうございます♪

    さて、追加の質問をさせて下さい。
    複数の「グループ」の表示/非表示をリボンからではなく、
    アドインのユーザフォームのコントロール(チェックボックス等)から行う方法を
    ご教示下さい。これによりExcelクローズ時の状態をファイル等に保存しておいて
    次回のExcel起動時のデフォルトにしたいと思っています。

    どうぞよろしくお願い致します。

    • > spacedragon さん

      初心者備忘録管理人のきぬあさです。
      myRibbonをPublicにしておけば、ユーザフォームからでもInvalidateControlメソッドを呼び出せますので、問題は“設定をどのタイミングでどこに保存し、どこから読み込むか?”になるかと思います。

      シート、レジストリ、外部ファイル、ブック内のカスタムXML、ファイルのプロパティ、様々な保存場所が考えられますが、一例としてシートに設定値を保存するthom氏のブログ記事をご紹介します。

      ・VBA マクロの設定をどこに保存するか
      https://thom.hateblo.jp/entry/2015/06/19/052753
      ・VBA マクロで利用する設定値をシートに保存し、文字列でアクセスするテクニック
      https://thom.hateblo.jp/entry/2018/06/16/035609
      ・VBA マクロの設定をシートに保存する場合のテクニック
      https://thom.hateblo.jp/entry/2015/06/21/021207

  3. きぬあさ様

    ありがとうございます♪
    シートに設定値を保存するのは現在のアプリに実装ずみなのでOKです。
    問題はユーザフォーム上のチェックボックスによってトグルで
    特定のグループの表示/非表示を動的に切り替えたいです。
    そのときのInvalidateControl周りの記述方法が分かりません。

    UIのonLoadでPublic変数のリボンをセットしたあとに、
    チェックボックスの記述はどうなるのでしょうか?
    お手数ですがご教示頂けますと幸いです

    どうぞよろしくお願い致します。

    • > spacedragon さん

      初心者備忘録管理人のきぬあさです。
      簡単なサンプルを書いてみましたので、ご参考にしていただければ幸いです。

      ・[リボン・カスタマイズ]グループの表示・非表示をユーザーフォームのチェックボックスで切り替える。
      https://www.ka-net.org/blog/?p=11294

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP