次の方法で共有

Excel VBA でリボンを作成するには?

Anonymous
2011-09-06T05:51:20+00:00

Excel2010

はじめまして。

Excelアドイン(xlam)を作成して

リボンにマクロ登録したいと思っています。

手動でユーザーリボンを作成して、マクロを登録する事は出来ましたが

社内で使うとなると、都度リボンを手で作成していては面倒と思い

vbaで自動作成できないかと考えています。

マイクロソフトのサイトでMS Projectはありましたが

Excelでは動きませんでした。

ActiveProject.SetCustomUI (ribbonXml)←ここでエラー

[http://msdn.microsoft.com/ja-jp/library/ee767705.aspx]

ご存知の方教えてください。

よろしくお願いします。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2011-09-06T07:20:19+00:00

こんにちは。

SetCustomUIメソッドを引き合いに出されているところを見ると、リボンをVBAで動的に変更したい、ということだと思いますが、SetCustomUIメソッドはExcelにはありませんので実行できません。

リボン全体を動的に変更することもExcel VBAの範疇ではできないのですが、dynamicMenu要素のgetContent属性のコールバックを利用すれば、リボンの一部を動的に変更することは可能です。下記ページでサンプルを載せていますので、そちらが参考になるかと思います。

「メニューの内容を動的に変更する」

http://www.ka-net.org/ribbon/ri70.html

「リボン上のメニューからテンプレートを選択する(Word)」

http://www.ka-net.org/ribbon/ri71.html

「外部のXMLファイルを読み込み、ユーザー名に応じてmenu内容を変更する」

http://www.ka-net.org/blog/?p=196

「menu内にあるbuttonの数を増やす」

http://www.ka-net.org/blog/?p=207

「リボンからプリンタを選択して簡単に印刷できるようにする(Word)」

http://www.ka-net.org/blog/?p=234

上記ページにある通り、getContent属性を利用することで外部のXMLを読み込むことや、動的に作成したXMLを読み込むことが可能になりますので、メニュー(dynamicMenu要素)部分を外部のXMLファイルから読み込むようにしておけば、元となるxlamファイルを編集することなくリボン(の一部)を変更することができるようになります。

もし、上述の"リボンを動的に変更したい"ということではなく、"リボン・カスタマイズしたファイルをマクロで作成したい"ということであれば、XML編集とZip形式での圧縮機能を実装することになるだろうと思います。

(こちらも不可能ではありません。)

この回答は役に立ちましたか?

3 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

2 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2011-09-13T08:24:39+00:00

    きぬあさ さん、アドバイスありがとうございます。

    basser819 さん、こんにちは。

    今回は きぬあさ さんからいただいたアドバイスがご参考になったようですね。

    同じような疑問をお持ちの方にもご参考になればと思い、今回は私の方で \[回答としてマーク\] をいたしました。

    また次回も Answers をご利用ください。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2011-09-06T09:47:09+00:00

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

    説明不足で分かり辛く申し訳ございません。

    ExcelはSetCustomUIメソッドが無いのですね・・・。残念ですね。

    動的にメニューを作成できれば、xlamファイルを配布するのに

    手間いらずで楽かなと思い調べていました。

    またアドインすることでマクロの有効化メッセージも出さないで

    マクロを実行出来るので、都合がいいと思いました。

    教えて頂いたリンクは後程見たいと思います。ありがとうございます。

    現在はリボンのユーザー設定のインポート/エクスポートで

    マスタとなるメニューを作成し

    エクスポートした”Excel Customizations.exportedUI”とxlamファイルを

    インポートして配布の手間が解消されそうです。

    しかし、インポートの順番を間違えるとマクロが動かないんですね。

    xlamファイルのアドイン、”Excel Customizations.exportedUI”のインポートで

    マクロが動きました。

    色々と教えて頂きありがとうございました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません