VBAでリボンに新しいタブを追加する方法

このQ&Aのポイント
  • VBAを使用してエクセル2010のリボンに新しいタブを追加したい場合、マクロの記録ではできないことがあります。
  • 2003の時に使われていたコードではリボンの追加ができない場合があります。
  • エラーが発生し、プロシージャの呼び出しや引数に問題がある可能性があります。解決方法を探しましょう。
回答を見る
  • ベストアンサー

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「プロシージャの呼び出し、または引数が不正です。」 になります。 どうすればいいでしょうか?

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

復習してみました。xl2010用のオリジナルリボンの作り方です。 1.ファイル/オプション/詳細設定で「アドインユーザーインターフェースに関するエラーを表示する」にチェックを入れます 2.新規ファイルを作成し、標準モジュールに次のコードを書き込みます。(リボンから呼ばれる時の引数をお忘れ無く) Sub test(control As IRibbonControl) MsgBox "Hello World!" End Sub 3.MyTab.xlsm等任意の名前・マクロ有効で保存し、閉じます。 4.3のファイル名の末尾に.zipをつけ、MyTab.xlsm.zipと改名します。 5.ファイルアイコン上で右クリックしてプログラムから開く/エクスプローラを選びます 6.圧縮フォルダとして開かれるので_relフォルダ内の.relsファイルをデスクトップにコピーします。コピーしたものでないと編集できません。 7.コピーした.relsファイルをテキストエディターで開きます。 8.最後の</Relationships>の前に、 <Relationship Id="someID" Type="http://schemas.microsoft.com/office/2007/relationships/ui/extensibility" Target="customUI/customUI14.xml"/>の行を追加します。元の場所に書き戻します。 9.デスクトップにcustomUIというフォルダーを作成します。テキストエディターで下記の内容のファイルを作成し、customUI中に、customUI14.xmlという名前で保存します。(UTF-8,CR+LFで保存しないと全角文字を使った時に化けるそうです)。 <?xml version="1.0" encoding="utf-8"?> <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"> <ribbon> <tabs> <tab id="CustomTab" label="My Tab"> <group id="SimpleControls" label="My Group"> <button id="Button1" imageMso="HappyFace" size="large" label="Large Button" onAction="Test" /> </group> </tab> </tabs> </ribbon> </customUI> 10.customUIフォルダーを、圧縮フォルダー内にコピーします。_relフォルダー内では無く、並びにコピーします。 11.MyTab.xlsmと改名します 12.このファイルを開くと、My Tabという新しいタブが出来ており、スマイルアイコンが一個入っています。実行するとHello World!が表示されます。 アドインにして組み込めばいつでも、または別のPCに持っていっても使用できます。 詳細は、下記Webサイト等でお勉強して下さい。 http://homepage2.nifty.com/suyamsoft/Ribbon/index.html http://www.ka-net.org/ribbon/ri01.html

KGCJMUKXQBP
質問者

お礼

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

関連するQ&A

  • 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 コマンドバーなどの検索ワードだと関係ないものを拾ってしまい、なかなか調べられません。 助言お願いします。

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

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

  • VBA アドイン

    今,下記のプログラムを組みメニューバーに登録しユーザフォームを実行させようとしています. Private Sub workbook_addininstall() Dim Menubar As CommandBar Set Menubar = Application.CommandBars.Add(Name:="グラフ作成ツール") With Menubar.Controls.Add(Type:=msoControlButton) '1 .FaceId = 23 .Style = msoButtonIconAndCaption .TooltipText = "グラフ作成ツール" .OnAction = ThisWorkbook.Name & "!UserForm_open" End With Menubar.Visible = True MsgBox "「グラフ作成ツール」ツールバーがインストールされました。", vbOKOnly End Sub 標準モジュールに Sub UseForm_open() graph.Show End Sub として実行させようとすると,下記のようなエラーが返ってきて実行できませんでした. マクロ''グラフ作成ツール.xla'!UserForm'を実行できません。   このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。 どうすれば実行できますでしょうか?ご指導ご鞭撻のほどよろしくお願いいたします.

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

    全部一覧にして書き出してみたいのですが エラーを無視してる為、最高いくつあるのかわかりません。 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

  • 二つ目のタブを閉じたい

    http://hiroba.chintai.net/qa7823804.html こちらでも質問したものです。 xls88さまに教えていただいて、 Sub test() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.navigate "http://www.yahoo.co.jp/" objIE.Navigate2 "http://www.goo.ne.jp/", 2048 objIE.Navigate2 "http://www.google.co.jp/", 2048 objIE.Quit Set objIE = Nothing End Sub で、複数のタブを開くことができたのですが、 http://www.goo.ne.jp/のタブだけを閉じたい場合はどうすればいいでしょうか? 上記のコードを実行すると、http://www.yahoo.co.jp/が閉じてしまいます。 ご回答よろしくお願いします。

  • 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

  • Word ツールバーの削除

    下記の様なマクロを組み込みました。 しかしこのマクロ自体不必要になったので削除したのですがツール→ユーザー設定→ツールバーにはツールバー及びボタンが残ってしまいました。 ツール→ユーザー設定→ツールバーで削除をすれば消えますが新たにWordを立ち上げると消えていません。 マクロでCommandBars("Indent").Deleteともしましたが結果は同じでした。 どうすれば消えるのでしょうか?どなたかご教授願います。 Sub auto_open() Dim myBar As CommandBar, myButton As CommandBarButton '新しいMenuBarを追加 Set myBar = CommandBars.Add 'MenuBarに名前を設定 myBar.Visible = True myBar.Name = "Indent" myBar.Position = msoBarTop '新しいボタンを追加 Set myButton = myBar.Controls.Add With myButton .Caption = "[チュックインデント]" .Style = msoButtonCaption End With 'ボタンが押下時実行マクロ設定 myButton.OnAction = "checkIndent" myBar.Visible = True End Sub Sub auto_close()

  • 複数のタブを開きたい IE

    IE9を使っています。 画像のようにタブを二つ開くにはどうすればいいでしょうか? Sub test() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" Set objIE = Nothing End Sub だと一つのタブしか開けません。 Sub test() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" objIE.Navigate "http://www.yahoo.co.jp/" Set objIE = Nothing End Sub にしても Sub test() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" objIE.Navigate2 "http://www.yahoo.co.jp/" Set objIE = Nothing End Sub にしても1つのタブしか開けないです。 ご回答よろしくお願いします。

  • エクセル2010をVBAによりリボンの最小化処理

    前回、「エクセル2010をマクロによりリボンの最小化処理(QNo.7450319)」により、 Sub macro1() CommandBars.ExecuteMso "MinimizeRibbon" End sub とします。 再度実行すると再表示します。 との回答をいただき早速利用しておりますが、FALSEとTRUEを使い、最小化と再表示を下記の様なコ-ドで出来ないものか、ご教示願います。     (リボンの最小化)    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""RIBBON"",FALSE)" (リボンの再表示)   Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""RIBBON"",TRUE)"

  • vbaでIEの操作

    こんばんは。やりたいことができないので教えてください。 vbaで指定のurlを開きたいです。 エクセル2003とIE8です。 Sub test001() Dim ObjIE As Object Set ObjIE = CreateObject("InternetExplorer.application") ObjIE.Visible = True ObjIE.navigate "http://jp.msn.com/" Do While ObjIE.Busy = True '表示させるまで待つ DoEvents Loop End Sub これでIEを立ち上げてURLを開けるのですが これでは新しいウインドウで開いてしまいます。 現在IEを立ち上げていて、上記のコードを実行すると 新たなタブで開きたいですが解決策はありますか? ObjIE.Visible = True が原因かと思い、これを抜かしてみましたが そうすると何も起こりません。 VBAで既に開いているIEの新しいタブでURLを開く方法をご教授ください!よろしくお願いします。

専門家に質問してみよう