[[20110405160117]] 『作ったマクロをメニューバーに追加し、全てのエク』(あや) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『作ったマクロをメニューバーに追加し、全てのエクセルで使いたい。』(あや)

 EXCEL2003 XP

 標準モジュールのModule1に下記のマクロ(サンプル)を書いています。

 Sub Macro1()
    Selection.Interior.ColorIndex = 6
 End Sub

 このマクロを、ツールバーにアイコンとして組み込みたいのです。

 いまわたしがわかっているところは、

 ユーザー設定画面からツールバーに
 マクロの中のにこちゃんマークを追加して
 マクロの登録をすることはできるようになりました。

 しかしこれだと、マクロが記述されているファイルのときだけ
 機能するのですが
 新規のファイルになると使えなくなってしまいます。

 開いたエクセル全てにこのアイコンの機能が使いたいのですが、
 どのようにすれば良いのでしょうか。

 よろしくおねがいします。

 アドイン化するのが一番良いと思います。
 ThisworkbookモジュールでOpenイベントにCommandBarの追加コード
 Before_CloseにCommandBarの削除コード
 標準モジュールに上記のコードを入れて
 保存する時にアドイン(拡張子xla)を選んで保存

 ツールのアドインから保存したブックを参照してチェックを入れれば完了です。
 (momo)

 >ThisworkbookモジュールでOpenイベントにCommandBarの追加コード
 >Before_CloseにCommandBarの削除コード
 これを教えてあげなきゃ。
 (トオリスガリ)


 momoさん
 ありがとうございます。

 トオリスガリさん
 大丈夫です。
 試してみますm(_ _)m


 ぶつかり。

 >しかしこれだと、マクロが記述されているファイルのときだけ
 >機能するのですが
 >新規のファイルになると使えなくなってしまいます。
 そんな事はないです。
 このマクロが動くには、このマクロが書かれたあるブックが開いている事が
 前提なだけで、マクロ自体は他のブックでも動きます。
 BJ

 >これを教えてあげなきゃ。
 必要なら質問者さんから直接御要望があろうかとも思いますし、
 その回答を望まれるのでしたらトオリスガリさんがご教授して頂いても良いように思いますが・・・

 >大丈夫です。
 >試してみますm(_ _)m
 頼もしいお答えが頂けていますが 

 >ユーザー設定画面からツールバーに
 手動でなさってたのを見落としていたのも事実なので。

 私の環境が2007でCommandBarのテスト環境が無いので
 完全に推測で書きますが、だいたいこんな感じで可能かと思います。

  Private Sub Workbook_Open()
  On Error Resume Next
    Application.CommandBars("aya").Delete
  On Error GoTo 0
  With Application.CommandBars.Add("aya", msoBarBottom)
    With .Controls.Add(msoControlButton)
      .FaceId = 59
      .OnAction = "Macro1"
    End With
    .Visible = True
  End With
  End Sub

  Private Sub Workbook_BeforeClose(Cancel As Boolean)
  On Error Resume Next
    Application.CommandBars("aya").Delete
  On Error GoTo 0
  End Sub

 (momo)

 >With Application.CommandBars.Add("aya", msoBarBottom)

 エクセルがこけた時の保険
 With Application.CommandBars.Add("aya", msoBarBottom, Temporary:=true)
 (トオリスガリ)


 遅くなりました。

 BJさん
 そうですね。
 マクロが書いてあるファイルを開いておけば 他のブックでも動きます。
 わたしの文章が間違っていましたが、
 今回はマクロを書いているファイルを開いていなくても 使いたかったのです。

 momoさん
 ご丁寧にありがとうございます。とても助かります。
 2003もこのままのマクロで動きました。

 トオリスガリさん
 ありがとうございます。

 何度か試していて
 追加されるボタンの位置を設定したいので、マクロの記録を取りました。

    Application.CommandBars("Formatting").Controls.Add Type:=msoControlButton, ID:=2950, Before:=24

 Before:=24 を使えば良いのかと思うのですが、
 momoさんのコードにどんな風に追加したらよいかわからないので
 教えて下さいm(_ _)m

 調べてみてこうかなぁ?と思って入れてみましたが、下記2つはエラーになりました -д-

    With .Controls.Add(msoControlButton, before:=24)
      .FaceId = 1
      .OnAction = "Macro1"
  End With

    With .Controls.Add(msoControlButton)
      .FaceId = 1
      .OnAction = "Macro1"
   .before = 24
  End With

(あや)


 >今回はマクロを書いているファイルを開いていなくても 使いたかったのです。
 基本的にマクロが書いてあるファイルが開いていないと使えません。
 アドインなりマクロブックもファイルは開いて使うものです。
 アドインもつき詰まればブックだから、ファイルを開かないと使えませんよ。
 単純にブックを非表示にしているだけです。
 BJ

 BJさん
認識違い、整頓できました。
ありがとうございました。

(あや)


 私のコードでは
 >With Application.CommandBars.Add("aya", msoBarBottom)
 >  With .Controls.Add(msoControlButton)
 のようにayaというCommandBarを作っています。
 Formattingに追加するとControlを消すのに面倒ですし

 >With Application.CommandBars.Add("aya", msoBarBottom)
 を
  With Application.CommandBars.Add("aya", msoBarTop)
 にするくらいで妥協しませんか?           ~~~~~~~~~ 

 妥協できない場合は
 そこだけではなくてCommandBarの削除やら他にも変えないといけません
 (momo)

 momoさんありがとうございます。
 >Formattingに追加するとControlを消すのに面倒ですし
 なるほど、そうなんですね。
 知らずに同じ感覚で出来るかなぁと思っていましたm(_ _)m

 コマンドバーを追加する方向で
 十分希望の動きが得られました。

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

(あや)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.