コマンドバーのコントロールの数と一覧を取得してみたい

このQ&Aのポイント
  • エラーを無視しているため、コマンドバーのコントロールの総数がわかりません。コマンドバーのコントロールの数と一覧を取得してみたいです。
  • コマンドバーのコントロールの総数を取得しようとしていますが、エラーにより正確な数はわかりません。コマンドバーのコントロールの数と一覧を取得する方法を知りたいです。
  • 現在、エラーが発生しているため、正確なコマンドバーのコントロールの数を把握できません。コマンドバーのコントロールの数と一覧を取得する方法についてアドバイスをいただけませんか?
回答を見る
  • ベストアンサー

コマンドバーのコントロールって全部で何個あるの?

全部一覧にして書き出してみたいのですが エラーを無視してる為、最高いくつあるのかわかりません。 Sub tes() Dim myBar As CommandBar Dim myCmd As String Dim blYes As Boolean Dim i As Long myCmd = "test" For Each myBar In CommandBars If myBar.NameLocal = myCmd Then blYes = True '既にmyCmdがあるのなら削除する Application.CommandBars("test").Delete Exit For End If Next Set myBar = CommandBars.Add(Name:="test") On Error Resume Next For i = 1 To 2000 myBar.Controls.Add ID:=i Next i myBar.Visible = True Set myBar = Nothing End Sub

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

>コマンドバーのコントロールって全部で何個あるの? 何について調べようとしているのかは、理解してるモノとします。 >全部一覧にして書き出してみたい その通りにやってみます。 sub macro1()  dim cb as commandbar  dim cbc as commandbarcontrol  dim n as long  for each cb in application.commandbars   for each cbc in cb.controls    n = n + 1    cells(n, "A") = cb.index    cells(n, "B") = cb.namelocal    cells(n, "C") = cbc.index    cells(n, "D") = cbc.caption   next  next end sub

AIJBPGWYWU5
質問者

お礼

ご回答ありがとうございました。

その他の回答 (1)

  • qy8ls3pt7
  • ベストアンサー率52% (374/706)
回答No.1

Excelなら、 「リボン」 →「Excelのオプション(I)」 →「Excelのオプション」ダイヤログの左側「ユーザ設定」クリック →「コマンドの選択(C)」プルダウンで「すべてのコマンド」を選択 で、すべてのコマンドが出てきます。

AIJBPGWYWU5
質問者

お礼

ご回答ありがとうございました。

関連するQ&A

  • エクセル2007にコマンドバーはないのですか?

    Sub コマンドバー作成() Dim myBar As CommandBar Set myBar = CommandBars.Add(Name:="test") myBar.Visible = True End Sub これをしても何も起きないのですが、2007はコマンドバーがないのでしょうか? 2003の時はコマンドバーが作成されました。

  • Office2007でコマンドバーの作り方

    最近Officeを2003から2007に変更しました。 2003では、『頻繁におこなう作業』を『VBAでコマンドバー上のボタン』化して、効率化していました。 例) Dim MyBar As CommandBar Dim MyButton1 As CommandBarControl Set MyBar = Application.CommandBars.Add(Name:=cnstCommandBarName, Position:=msoBarLeft) MyBar.Visible = True Set MyButton1 = MyBar.Controls.Add(Type:=msoControlButton, Id:=1) ところが、2007では、コマンドバーはできず、アドインリボンにボタンができてしまいます。 コマンドバー化は2007ではできないでしょうか? Web検索でも調べていますが、Office コマンドバーなどの検索ワードだと関係ないものを拾ってしまい、なかなか調べられません。 助言お願いします。

  • vbaでリボンに新しいタブを追加したい。

    エクセル2010です。 マクロの記録で ファイル→オプション→リボンのユーザー設定→新しいタブ で、新しいタブを挿入しても記録できませんでした。 2003の時に使っていた Sub Sample() Dim myBar As CommandBar Set myBar = CommandBars.Add(Name:="test") myBar.Visible = True End Sub と言うコードがあるのですが、 これでリボンの追加ができるのかと思い実行してみましたが 何も変化が起きません。 2度目にこのコードを実行しようとすると Set myBar = CommandBars.Add(Name:="test") で、 実行時エラー5「プロシージャの呼び出し、または引数が不正です。」 になります。 どうすればいいでしょうか?

  • エクセル2003 自作ツールバー(コマンドバー)の選択戻り値取得方法

    ツールバーのショートカットを自作して 入力を楽にしようと考えております。 ツールバーには、直接入力するリストを表示させ そのリストの中から選んで、セルに記入させると 言うマクロを作ろうとしているのですが、 選択された、リストの戻り値を取れないため、 苦戦しております。 戻り値の取得方法とかあるのでしょうか? 宜しくお願いいたします。 コードを以下に記します。 Option Explicit Option Base 1 Dim myCB As CommandBar Dim myCBCtrl As CommandBarButton Dim myData() As String Dim n As Integer, i As Integer ---------------------------------------------------------------- Sub AddCmdBarBtn() Call 配列 On Error Resume Next CommandBars("MyMacro2").Delete Set myCB = Application.CommandBars.Add(Name:="MyMacro2", _ Position:=msoBarPopup, Temporary:=True) For i = 1 To 5 Set myCBCtrl = myCB.Controls.Add(Type:=msoControlButton) With myCBCtrl .Caption = myData(i) .OnAction = "ツールバーマクロ" End With Next i myCB.ShowPopup End Sub ---------------------------------------------------------------- Private Sub ツールバーマクロ() ActiveCell.Value = myCB.Controls.Item.Caption<<<此処を上手く処理できません(泣) End Sub ---------------------------------------------------------------- Private Sub 配列() ReDim myData(5) For n = 1 To 5 myData(n) = "名前" & n Next n End Sub ---------------------------------------------------------------- このマクロを右クリックイベントで使って行きたいと考えている のですが。

  • VBA コマンドバーを消した後に残る空白部分

    お世話になります。 ExcelVBAで、コマンドバーの類を全て消去した後に残る、 空白部分ができる原因が解りません。 この部分をダブルクリックすると、エラーになって強制終了に なってしまいます。 完全に消してしまいたいのですが、この状況になってしまう、 原因と対策を教えてください。 内容は、『システム』という名のシートにある『ロック』ボタンを 押すと、コマンドバーを全て消去して、Sheet1に切り替わるといった 流れです。 ↓モジュール側 ------------------------------------------------------------- Dim myCB As CommandBar Public Sub onCmdBarAttr() DoEvents With Application For Each myCB In Application.CommandBars myCB.Enabled = True Next myCB .CommandBars("Standard").Visible = True .CommandBars("Formatting").Visible = True .CommandBars("Visual Basic").Visible = True .CommandBars("Worksheet Menu Bar").Enabled = True .CommandBars("CELL").Enabled = True ' タスクバーに表示させる .ShowWindowsInTaskbar = True ' 数式バーを表示 .DisplayFormulaBar = True ' ステータスバーを表示 .DisplayStatusBar = True End With End Sub Public Sub offCmdBarAttr() Dim myCB As CommandBar On Error Resume Next For Each myCB In Application.CommandBars myCB.Enabled = False Next myCB On Error GoTo 0 With Application .CommandBars("Worksheet Menu Bar").Enabled = False .CommandBars("CELL").Enabled = False ' 数式バーを消去 .DisplayFormulaBar = False ' ステータスバーを消去 .DisplayStatusBar = False ' タスクバーに表示させない .ShowWindowsInTaskbar = False End With End Sub ' シートロック Public Sub protectSheet(ByVal stSheetName As String) Application.ScreenUpdating = False ' 一旦シート保護をかけ直す With Worksheets(stSheetName) .Activate .Unprotect .Protect UserInterfaceOnly:=True ' カーソルの移動範囲を設定する .ScrollArea = "$A$1" ' 左上セルを選択 .Range("H16").Select ' 保護されたセルは選択不可にする .EnableSelection = xlNoRestrictions End With Application.ScreenUpdating = True End Sub ' シートロック解除 Public Sub unprotectSheet(ByVal stSheetName As String) ' 一旦シート保護をかけ直す With Worksheets(stSheetName) .Unprotect ' スクロール範囲を解除する .ScrollArea = "" ' 保護されたセルでも選択可能にする .EnableSelection = xlUnlockedCells End With End Sub Public Sub setBookAttribute(ByVal bFlg As Boolean) With Windows(ThisWorkbook.Name) ' タブを設定 .DisplayWorkbookTabs = bFlg ' スクロールバーを設定 .DisplayHorizontalScrollBar = bFlg .DisplayVerticalScrollBar = bFlg ' グリッドを設定 .DisplayGridlines = bFlg ' 行列数表示を設定 .DisplayHeadings = bFlg End With End Sub ↓シート側 ------------------------------------------------------ Private Sub btnProtect_Click() ' アプリケーション全体の処理 Call Module1.offCmdBarAttr ' シート単位の処理 Call Module1.protectSheet("Sheet1") ' ブック単位の処理 Call setBookAttribute(False) Worksheets("Sheet1").Activate End Sub Private Sub btnUnprotect_Click() Call Module1.onCmdBarAttr Call Module1.unprotectSheet("Sheet1") Call setBookAttribute(True) End Sub 以上、よろしくお願いいたします。

  • Excel2003右クリックについて

    Excel2000でVBAを使って右クリックのメニューに項目を追加するマクロを作成したのですが、 Excel2003では右クリックでメニューが出てきません。なぜでしょうか?? Private Sub Workbook_Open() Dim cbMenuBar As CommandBar Dim cbGomaPop As CommandBarPopup Dim oGomaControl As CommandBarControl Dim cbGomaMenuItem As CommandBarButton Dim n As Integer Dim fExistGomaContextMenu As Boolean On Error Resume Next ' Add Goma Menu to Context Menu Set cbMenuBar = Application.CommandBars("Cell") ' Avoid Excel2003(beta) Error on Add Context Menu If Int(Application.Version) < 11 Then 'Check Goma Context Menu (Dic) Exist fExistGomaContextMenu = False For n = cbMenuBar.Controls.Count To 1 Step -1 If cbMenuBar.Controls(n).Caption = MITEM_DIC_CAPTION2 Then fExistGomaContextMenu = True Exit For End If Next n If fExistGomaContextMenu = False Then Set cbGomaMenuItem = cbMenuBar.Controls.Add(Temporary:=True) With cbGomaMenuItem .BeginGroup = True .Caption = MITEM_TRAN_CAPTION2 .OnAction = MITEM_TRAN_ACTION End With Set cbGomaMenuItem = cbMenuBar.Controls.Add(Temporary:=True) With cbGomaMenuItem .Caption = MITEM_OPT_CAPTION2 .OnAction = MITEM_OPT_ACTION End With Set cbGomaMenuItem = cbMenuBar.Controls.Add(Temporary:=True) With cbGomaMenuItem .Caption = MITEM_DIC_CAPTION2 .OnAction = MITEM_DIC_ACTION End With Set cbGomaMenuItem = cbMenuBar.Controls.Add(Temporary:=True) With cbGomaMenuItem .Caption = MITEM_DIC_CAPTION3 .OnAction = MITEM_DIC_ACTION2 End With End If End If End Sub おわかりになる方がいらっしゃいましたら教えて下さい。

  • Excel マクロ ファイルオープン時 自動実行 

    いつもありがとうございます。初心者につき、わかりにくい文章かもしれませんが、宜しくお願い致します。 Excel2003で改ページを自動で行うマクロをこちらの過去の質問を参考にしながら作成しました。 勤め先の同僚にも配布しようと思い、どうせならマクロ実行が簡単なようにと、ユーザー定義のツールバー作成のマクロも作成。ここまでは無事に出来たのでが・・・ さらにファイルを開いた時に自動でツールバーが作成マクロを実行するように Sub Auto_Open()を用いて無事に成功、しかし一旦終了して再度このファイルを開くと 実行時エラー ’5’: プロシージャの呼び出し、または引数が不正です。 というエラーが出てしまいます。一回目に開いた時にSub Auto_Open()によって作成したツールバー作成のマクロを再度実行しようとするのが原因だと思うのですが、これを回避する方法があるのでしょうか? ちなみにエラーのダイヤログの終了ボタンを押せば、他のマクロは問題なく作動しますし、 本来の目的は別ファイルの改ページを、自動に行うためのマクロの実行をツールバーにて簡単に行うためのもので、このエラーが出たからといって何ら支障は無く、他のファイルからこの改ページのマクロを実行してもエラーは出ず、本来の目的は達成しおり問題は無いのですが、気分的にスッキリしません。何卒宜しくお願い致します。 下記をご参照ください。(実際は改頁マクロは複数あり) Sub A改ページ() Dim PB As HPageBreak Dim idx As Long Const tCol As String = "A" '改頁判断する列 With ActiveSheet For idx = 3 To .Cells(65536, tCol).End(xlUp).Row If .Cells(idx, tCol) <> .Cells(idx - 1, tCol) Then ActiveSheet.HPageBreaks.Add Before:=.Cells(idx, tCol) End If Next idx End With End Sub Sub ツールバー作成() Dim myBar As CommandBar, myButton As CommandBarButton Set myBar = CommandBars.Add myBar.Name = "改頁マクロ" Set myButton = myBar.Controls.Add myButton.OnAction = "A改ページ" myButton.FaceId = 80 myBar.Visible = True End Sub Sub Auto_Open() ツールバー作成 End Sub

  • 再質問:ツールバーを非表示にするマクロ

    bonaronさんありがとうございます。 以下のコードで、ツールバーの非表示→表示がOKになったのですが、ファイル起動時にツールバーを非表示にして、ファイル終了時にツールバーを元に戻したいと思っています。よって、以下のコードを非表示にするコード、元にもどすコードの二つに分けたいのですができません。 非表示にするためには、 .CommandBars(i).Visible = False End If Next i End With End Sub で閉じればできるのですが、元に戻すコードの方はどのように書いたら良いのでしょうか?ご教授願います。 ////////////////////////////////////////////// Sub Test() Dim i, p(50), ToolCount With Application MsgBox "ツールバーを非表示にします。" 'カウンター変数の初期化 ToolCount = 0 '<------ For i = .CommandBars.Count To 2 Step -1 If .CommandBars(i).Visible = True Then ' カウンター変数1UP ToolCount = ToolCount + 1 '<--- この位置 '表示されていたら配列pにインデックスを書き込んで 'そのコマンドバーを非表示にする。 p(ToolCount) = i .CommandBars(i).Visible = False End If Next i MsgBox "ツールバーを元に戻します。" For i = 1 To ToolCount '配列pに書き込まれたインデックスを読み込んで 'そのコマンドバーを表示する。 .CommandBars(p(i)).Visible = True '<--- Next i End With End Sub

  • Excel2007互換モードでの右クリックロジック

    100件程度の実績のあるソフトですが、あるお客様のみ不思議な現象が発生しています。 そのお客様はWindowsXP & Excel2007の組み合わせで、ソフトは互換モードで動作しています。 Option Compare Text Option Explicit Sub migi_del() Dim icbc Application.CommandBars("cell").Reset For Each icbc In Application.CommandBars("cell").Controls icbc.Delete Next icbc End Sub Sub migi_add() Dim icbc Application.CommandBars("cell").Reset For Each icbc In Application.CommandBars("cell").Controls icbc.Delete Next icbc With Application.CommandBars("cell").Controls _ .Add(Type:=msoControlButton, Temporary:=True) .Caption = "Message!" .OnAction = "aaa" End With End Sub Sub migi_addTag() Dim icbc Application.CommandBars("cell").Reset For Each icbc In Application.CommandBars("cell").Controls icbc.Delete Next icbc With Application.CommandBars("cell").Controls _ .Add(Type:=msoControlButton, Temporary:=True) .Caption = "Message!" .OnAction = "aaa" .Tag = "aaa" End With End Sub Sub migi_Rest() Dim icbc Application.CommandBars("cell").Reset End Sub Sub aaa() MsgBox "OK" End Sub Sub Sample() Application.CommandBars("Row").Reset Application.CommandBars("Column").Reset End Sub の何れの操作を行っても、右クリックは標準のものが表示されてしまいます。 WindowsXP & Excel2007の組み合わせの他のお客様ではこのような現象は出ていません。 何方か理由をご存知の方はいらっしゃいませんか?

  • ツールバーを非表示にするマクロ

    あるHPで以下のコードを見つけて試してみました。 起動時に表示しているツールバーは消えるのですが、ファイルを閉じた場合に別のツールバーが開いてしまいます どこかコードがおかしいのでしょうか? 当方EXCEL2000です。 http://excelfactory.net/excelvbatips/application/apli_11.htm Sub Test() Dim i, p(50), ToolCount With Application MsgBox "ツールバーを非表示にします。" ToolCount = 1 'カウンター変数の初期化 For i = .CommandBars.Count To 2 Step -1 If .CommandBars(i).Visible = True Then p(ToolCount) = i .CommandBars(i).Visible = False '表示されていたら配列pにインデックスを書き込んで 'そのコマンドバーを非表示にする。 ToolCount = ToolCount + 1 ' カウンター変数1UP End If Next i MsgBox "ツールバーを元に戻します。" For i = 1 To ToolCount .CommandBars(i).Visible = True '配列pに書き込まれたインデックスを読み込んで 'そのコマンドバーを表示する。 Next i End With End Sub

専門家に質問してみよう