• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アドインで追加したツールバーのコマンドボタンを消せなくするには。)

アドインで追加したツールバーのコマンドボタンの制限方法について

このQ&Aのポイント
  • ExcelのVBAで作成したプログラムにアドインで追加したツールバーのコマンドボタンをユーザーが修正や削除することを制限する方法について教えてください。
  • フリーソフトなどを見ると、コマンドボタンが変更されても再立ち上げすると元の状態に戻るようですが、それを実現する方法を知りたいです。
  • 配布やメンテナンスを考慮して、障害の可能性を最小限に抑えたいので、経験のある方にアドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#102878
noname#102878
回答No.1

そのコマンドバーは手作業で作成して回ったのですか?・・・(^_^;; VBAが書けるのならCommandBarもVBAで作れますよ。 私が作ったxlaファイルのサンプルです。 xlaファイルのThisWorkbookモジュールに記述します。 ただし、見易さを考慮して各行先頭の空白は全角スペースにしています。 ポイントは以下の2点。 ・コマンドバーを作成するときに「Temporary:=True」を指定する。 これにより、コマンドバーがユーザーのPCに作成されず、Excelを閉じると削除されます。 ・ThisWorkbookを閉じるときにコマンドバーを削除する。 これによりアドインのチェックを外した瞬間にコマンドバーも削除されます。 ----------------------------------- Option Explicit Private Const cmstrBAR_NAME As String = "テストバー" ' *********************************************** ' ブック起動 コマンドバーを作成する。 ' *********************************************** Private Sub Workbook_Open()   Dim myCmdBar As CommandBar   Dim myCmdBarBtn As CommandBarButton   If CmdBarExis = False Then     Set myCmdBar = Application.CommandBars.Add(Name:=cmstrBAR_NAME, Temporary:=True)     Set myCmdBarBtn = myCmdBar.Controls.Add(Type:=msoControlButton)     With myCmdBarBtn       .Caption = "入力"       .DescriptionText = "入力用フォームを表示する"       .TooltipText = "入力用フォームを表示します"       .Style = msoButtonCaption       .OnAction = "ShowEntryForm"     End With     Set myCmdBarBtn = myCmdBar.Controls.Add(Type:=msoControlButton)     With myCmdBarBtn       .Caption = "集計"       .DescriptionText = "月度集計を開始する"       .TooltipText = "今月の集計を開始します"       .Style = msoButtonCaption       .OnAction = "LetCalc"     End With     myCmdBar.Visible = True     Set myCmdBarBtn = Nothing     Set myCmdBar = Nothing   End If End Sub ' *********************************************** ' ブックを閉じる コマンドバーを削除する ' *********************************************** Private Sub Workbook_BeforeClose(Cancel As Boolean)   If CmdBarExis = True Then     Application.CommandBars(cmstrBAR_NAME).Delete   End If End Sub ' *********************************************** ' ブック アクティブ時 コマンドバーを表示する ' *********************************************** Private Sub Workbook_Activate()   If CmdBarExis = True Then     Application.CommandBars(cmstrBAR_NAME).Enabled = True     Application.CommandBars(cmstrBAR_NAME).Visible = True End If End Sub ' *********************************************** ' コマンドバーを隠す ' *********************************************** Private Sub Workbook_Deactivate()   If CmdBarExis = True Then     Application.CommandBars(cmstrBAR_NAME).Enabled = False     Application.CommandBars(cmstrBAR_NAME).Visible = False   End If End Sub ' *********************************************** ' このアドインで作成したCommandBarがすでに ' 存在するかチェックする。 ' 戻り: 存在する = True, 存在しない = False ' *********************************************** Private Function CmdBarExis() As Boolean   Dim Bar As CommandBar   For Each Bar In Application.CommandBars     If Bar.Name = cmstrBAR_NAME Then       CmdBarExis = True       Exit Function     End If   Next Bar End Function -----------------------------------

tosi0000
質問者

お礼

有り難う御座います。 早速試したいと思います。

tosi0000
質問者

補足

テストしました。 goodです。 補足ですが、ボタンにイメージ図を表示させようと思っています。FaceIdを使うつもりですが、ちょっと行き詰まって再度OKWEBに質問を出しました。 有り難う御座いました。

関連するQ&A