- ベストアンサー
エクセル95のVBAマクロに詳しい方!
エクセルの画面からメニューバー等のすべてのバーを標示させないようにするには下記の記述ということを教わりました。(有難う御座いました) 試したところ97、2000ではこれで完璧でした。 ところが95ではエラーになってしまうのです。ファイルはもちろん95形式で保存してあります。 どなたか、95に詳しい方、対処法をご教示ください。 Sub コマンドバー非表示() For Each myCB In Application.CommandBars myCB.Enabled = False Next myCB End Sub
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
何度もすみません。 Sub a() For Each myMn In MenuBars(xlWorksheet).Menus myMn.Delete Next myMn For Each myTb In Application.Toolbars myTb.Visible = False Next myTb End Sub で試してみてください Sub b() MenuBars(xlWorksheet).Reset For Each myTb In Application.Toolbars myTb.Visible = True Next myTb End Sub で戻せます。(ツールバーは全て出てしまいますが)
その他の回答 (6)
- taisuke555
- ベストアンサー率55% (132/236)
いろいろ試してみたのですが、私の力では出来ませんでした。 API関数を使えば、もしかしたら出来るかもしれませんが・・・ あとは、メニューバーに自分の作ったメニューを表示させたりして、 ごまかす位の方法しか思いつきません。 役に立たず申し訳ありません。
お礼
ありがとうございました。 無理を言いました、すみません。 文字のでないバーでやることにしました。これでも十分です。ありがとうございました。
- taisuke555
- ベストアンサー率55% (132/236)
>バーそのものは残ってしまうんです。 元の質問では、メニューバーを消してませんが、消さなくてもいいですか? For Each myMn In MenuBars(xlWorksheet).Menus myMn.Enabled = False Next myMn とすれば、メニューの文字が消えず、灰色になります。 こうすれば、何もない、バーよりはましだと思いますが・・・ どうしても消したい場合は補足してください。バーを消す方法も考えてみます。(消えるかわかりませんが) >でてくるのは標準と書式設定だけでいいんですが。 標準と書式設定のみ表示させる方法です。 コメントにしてある方法でもできます。 Sub b() MenuBars(xlWorksheet).Reset For Each mytb In Application.Toolbars 'MsgBox mytb.Name 'ツールバーの名前を取得(テスト用) Select Case mytb.Name Case "標準", "書式設定" mytb.Visible = True End Select Next mytb 'Application.Toolbars("標準").Visible = True 'Application.Toolbars("書式設定").Visible = True End Sub
お礼
何度も何度もありがとうございます。 まず、sub b()は完璧でした。ありがとうございました。 >>バーそのものは残ってしまうんです。 >元の質問では、メニューバーを消してませんが、消さなくてもいいですか? 97や2000同様、バーそのものを消したいのです。 無理ならあきらめますが・・・・。 何度もすみません。
- tamagawa49
- ベストアンサー率46% (123/265)
#1です。動作確認せず回答してしまい申し訳ありませんでした。 機能するマクロは Application.MenuBars(xlWorksheet).Reset でした。 確か、Excel95は97以降とは違い、メニューバーは他のツールバーとは一線を引いた格上の物でした(現在は全てコマンドバー)。 従って、メニューバーだけはvisibleでは消えません(今もかな?)。 97以降だとEnableで消えますが、95はそれも出来ません。 従って95の場合はメニューバー自身ではなく、「ファイル」「編集」などを一つ一つ消去(Delete)します。そのリセット命令が、上位互換となって現在のExcelでも動くわけです。 昔の名残で自分のファイルにも Application.MenuBars(xlWorksheet).Reset があったので、よく確かめずに回答してしまいました。 結局#4さんの回答で動作すると思います。
- taisuke555
- ベストアンサー率55% (132/236)
憶測で書いてすみません。 質問です。 (1)ヘルプにMenusおよびToolbarsは載っていますか? Menusにカーソルを合わせF1でMenusのヘルプがでると思います。(Excel2000) 出なければ、ヘルプで検索してみてください。 (2)あった場合に (Excel95のヘルプを良く知らないのでExcel2000のヘルプで話を進めます) ・Menusプロパティ ヘルプの一番上に「対象」というのがあると思いますが、 「対象」をクリックした時に、Applicationがありますか? 無ければ、「対象になるオブジェクト」を教えてください ・Menusオブジェクト(コレクションオブジェクトになっているかも) ヘルプの一番上に「プロパティ」というのがあると思いますが、 「プロパティ」をクリックした時に、Enabled又はVisible又はHiddenはありますか? (3)なかった場合、#2で書いたものがどれでもいいですがありますか? 以上、確認してできれば補足してください。 Excel2000のヘルプには隠しオブジェクトとしてしか紹介されていないので、 煩わしいとは思いますが、すみません。
お礼
95のヘルプでMenusが書いてあるのをコピーしました。 わたしにはよくわかりません。すみません。 ●Menusコレクションオブジェクト Application L MenuBar L Menu L MenuItem 指定されたメニュー バーにあるすべての Menu オブジェクトのコレクションです。各 Menu オブジェクトはドロップダウン メニュー、ショートカット メニュー、またはサブメニューを表します。メニュー構造の詳細については、メニューの構成要素を参照してください。 使い方 新しいメニューをメニュー バーに追加するには、Add メソッドを使います。次の使用例は、[Visual Basic モジュール] メニュー バーにメニューを追加します。 MenuBars(xlModule).Menus.Add "デバッグ(&D)" コレクションのメンバの 1 つにアクセスするには、Menus メソッドを使い、アクセスするメンバは引数で指定します。コレクションのすべてのメンバに同時にアクセスする場合は、引数を省略します。 ●Menusメソッド オブジェクトを返すメソッドです。構文 1 では単体のメニュー (Menu オブジェクト) を返し、構文 2 ではメニュー バーにあるメニューのコレクション (Menus コレクション) を返します。値の取得のみ可能です。 構文 1 object.Menus(index) 構文 2 object.Menus object 必ず指定します。対象となる MenuBar オブジェクトを指定します。 index 構文 1 では必ず指定します。メニューの名前、またはインデックス番号を指定します。たとえば、ワークシートのメニュー バーに対して Menus("ヘルプ") または Menus(8) を実行すると、[ヘルプ] メニューが返されます
- taisuke555
- ベストアンサー率55% (132/236)
Excel95を使用していないので確認することができませんが、 Menu、MenuBar、MenuBars、MenuItem、MenuItems、Menus、Toolbar、 ToolbarButton、ToolbarButtons、Toolbars がCommandBarsに変更されているのではないかと思われます。 構成が定かではありませんが、 Sub コマンドバー非表示() For Each myMn In Application.Menus myMn.Enabled = False Next myMn For Each myTB In Application.Toolbars myTB.Enabled = False Next myTB End Sub で試してみてください。 もしできないようならば、上記オブジェクトのヘルプを参照してみてください。
お礼
ありがとうございます。 Sub コマンドバー非表示() For Each myMn In Application.Menus myMn.Enabled = False Next myMn For Each myTB In Application.Toolbars myTB.Enabled = False Next myTB End Sub をやってみましたが、駄目でした。97機でもためしましたがやはり駄目です。残念!
- tamagawa49
- ベストアンサー率46% (123/265)
Excel95までは他のツールバーとメニューバーは区別されていました。 確かメニューバーは Application.MenuBars(xlWorksheet) だったかと思います。 97からプログラムが変わって、どちらもコマンドバーという命令になったと記憶しています。 このマクロは上位互換があるので、95でも使用するファイルならば、メニューバーというプログラムにしておけば汎用性があります。 試してみて下さい。
お礼
さっそくありがとうございます。 Sub TEST() Application.MenuBars(xlWorksheet).Enabled = True End Sub と書いてみましたが、エラーになりました。 書き方がまずいのでしょうか?Visible = False でも試しましたが。
お礼
何度もお手数をかけ、申し訳有りません。どうもありがとうございました。 試しました。 Sub a()でメニューバーから項目が全て消えました。ありがとうございます。 ただ、バーそのものは残ってしまうんです。 これはどうしようもないですか? また、Sub b()で、通常は表示されないすべてのツールバーが出てしまいますが、これを消すには個別に指定しなければいけないのでしょうか? でてくるのは標準と書式設定だけでいいんですが。