Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Home Premium : Excel 2010)
リボンに追加したタブをVBAで表示・非表示することは可能でしょうか
投稿日時: 17/05/18 20:12:27
投稿者: 山中海

 Excel2010(Windows7 or Windows8.1 )で使用します。
 開発タブは、次のマクロで表示/非表示できます。
 
    If Application.ShowDevTools = False Then
        Application.ShowDevTools = True
    Else
        Application.ShowDevTools = False
    End If
 
リボンにユーザー設定でタブを追加しました。
 「演算子と罫線」、「マクロ」 の2つのタブです。
 
演算子と罫線には、クイックアクセスツールバーにあるボタンから
いろいろなボタンを登録してあります。
 「=」や各種の演算子、縦、横罫線、斜線の表示/非表示ボタンなど。
 
マクロタブには、自作のマクロを登録しました。
 外部からコピーした文字にふりがなを付ける。
 入力した文字を特定の列(B〜H列など)で文頭・文末を
 揃える文字の割り付け機能など、
 Wordのような文章編集用が多いです。
 
 理由は、特定のブックにこの表示/非表示マクロを登録しておき、
 そのブックが呼び出されているときだけ「演算子と罫線」、「マクロ」
 を表示させたいからです。
 
 練習問題を呼び出すときに、そのファイルのThisWorkBookのOpenに
 登録しておき、自動表示させようと思います。
 ファイルを閉じるときに、自動消去させます。
 
 共同使用のパソコン(教室で使用)ですので、他の人に不快感を
 与えないようしたいと思っています。
 
 「ShowDevTools」をどのように変更したら良いのかわかりません。
 
 よろしくお願いします。

回答
投稿日時: 17/05/18 21:40:56
投稿者: simple

きぬあささんの  15/09/17 13:21:53 の発言をそのまま引用します。
参考にしてください。
=== 以下全文引用です ====
こんにちは。
  
リボンのコントロールの表示・非表示を動的に設定したい場合は、下記のように「getVisible」属性を使います。
  
1.リボンXML
 

<?xml version="1.0" encoding="utf-8"?>
<customUI onLoad="Ribbon_onLoad" xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <ribbon>
    <tabs>
      <tab id="tabSample1" label="Sample Tab1" getVisible="tabSample_getVisible">
        <group id="grpSample1" label="Sample Group1">
          <button id="btnSample1" label="Button1" size="large" imageMso="HappyFace" />
          <button id="btnSample3" label="Button2" size="large" imageMso="HappyFace" />
          <button id="btnSample4" label="Button3" size="large" imageMso="HappyFace" />
        </group>
      </tab>
      <tab id="tabSample2" label="Sample Tab2">
        <group id="grpSample2" label="Sample Group2">
          <toggleButton id="tgbSample" label="Switch Tab Visible" size="large" imageMso="HappyFace" onAction="tgbSample_onAction" />
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

   
2.標準モジュール
Option Explicit

Private myRibbon As Office.IRibbonUI
Private flgTabVisible As Boolean

Public Sub Ribbon_onLoad(ribbon As IRibbonUI)
  Set myRibbon = ribbon
  flgTabVisible = False
End Sub

Public Sub tabSample_getVisible(control As IRibbonControl, ByRef returnedVal)
  returnedVal = flgTabVisible '表示状態指定
End Sub

Public Sub tgbSample_onAction(control As IRibbonControl, pressed As Boolean)
  flgTabVisible = pressed
  myRibbon.InvalidateControl "tabSample1" '指定したコントロール再描画
End Sub

   
上記のように、IRibbonUIオブジェクト(customUI要素のonLoadコールバックで返されるオブジェクト)のInvalidateControlメソッド(Invalidateメソッドでも可)を実行することで、コントロールの表示状態を切り替えることができます。

投稿日時: 17/05/19 19:36:20
投稿者: 山中海

simpleさん ありがとうございました。
 
どうやら私の考えが甘かったようです。
開発タブの「ShowDevTools」を名付けたタブ名に変更すれば出来ると
思っていました。
 
ご紹介いただいたマクロは私の力では理解できる範囲を超えています。
もう少しマクロを勉強し直します。
マクロの知識を増やしながら、ご紹介のマクロをテストして行きます。
 
ありがとうございました。