Mr.Tです、こんにちは。
#この記事は、基本、Excel2003を対象にしておりますが、Excel2007のケースへの対応方法もあわせて記載しております。
#この方法は、半ばイレギュラーな対応と考えてもらった方がよいかと思いますので、万一ご利用の環境でもうまくいかない
#というケースがもしかしたらあるかもしれません。
ツールバーに、独自のマクロを登録(アイコンで表示)させて、色々なExcelファイルで利用したいというのは、よくあることではないか
と思います。
例えば、こんな感じの状況です。
| Excelファイル A | 実行したいマクロ名 「計算実行()] |
| Excelファイル B | 実行したマクロ名 「計算実行()」 |
ExcelファイルA、Bを実行するには、マクロ名「計算実行」を行う必要があります。
ただし、名前は一緒でも、処理されるファイルが別々です。また、マクロの中身もちょっとだけ違います。
それでも、実行するボタンは一緒のボタンから実行したいのです。
Excelファイルのツールバーには、そのためのボタンを登録して、どちらのファイルを開いても、
ファイルAならファイルAの計算実行マクロ、ファイルBならファイルBの計算実行マクロを実行する必要があるのです。
実は、ツールバー登録するとそのボタンには、「ファイルパス!マクロ名」もしくは、「ファイルパス!シート名.マクロ名」
という情報をツールバーの中に持ちます。
#マクロは、標準モジュールに書くか、Sheetに書くかの違いですが、Sheetに書いた場合は、シート名の指定まで必要です
ボタンそのものに、どこのマクロを実行するかという情報が埋め込まれてしまうため、このままでは片方のファイルにある
マクロしか実行できません。
更に云えば、そのExcelファイルは、置き場所を変えてしまうと、ツールバーのボタンも実行できずにエラーになります。
#マクロが見つからないとか、なんとかいうエラーになる
ボタンに割り当てられるマクロは、マクロ名だけにしたいのに、パスがどうしても入ってしまう!
これをなんとかできないかな、というのが今回の本質的な趣旨です。
そこで、利用できるのが、アドインです。
アドインは、別段プログラムを書く必要はありません。
----実際の作業---
ツールバーにマクロを登録させるのは特に難しくありません。
「Excel アドイン 作成」で検索すると、すぐに作り方を理解できます。
http://members.at.infoseek.co.jp/kenchan_h/index15.html
http://www.asahi-net.or.jp/~ef2o-inue/haifu/sub06_030.html
- 目的のマクロだけを保存したExcelファイルを、AddInフォルダに拡張子、xlaとして保存するだけです。
メニューバー→ツール→アドインの中に、今保存したファイル名が表示されますので、チェックをいれておきます。
- チェックを入れてから、今度はツールバーに登録したマクロ実行のボタンに対して、マクロ名を割り当てます。
ただし、マクロ名は、マクロ選択ウィンドウには出てきませんので、入力欄には自前でマクロ名(シート名.マクロ名)を
入力してください。
- これで登録できたら、アドインのウィンドウで、先ほどチェックをいれたものを外します。さらに、AddInフォルダにある、保存したファイルを削除します。
- これで、ツールバーには、マクロ名だけの情報を持ったボタンが作成されました。
※保存先については、アドイン作成の際に参考にしたサイトなどで確認してください。
これで、ExcelファイルAのマクロも、ExcelファイルBのマクロも、アクティブになっているファイルのマクロが優先されて実行されるはずです。
もし、他のパソコンでもこのツールバーを使用したいというのであれば、Excel11.xlbというファイルがDocument And Setting/(User固有名)/Application Data/Microsoft/Excel/にあります。それをコピーして使ってください
【Excel2007】の場合は、クイックアクセスツールバーに登録することになります。
まずは、クイックアクセスツールバーに実行したいマクロを登録してください。
次に、Excel.qatというファイルを探してください。
そのファイルをメモ帳などで開くと、XMLファイルになっていることがわかります。そこで、マクロ名が指定されている箇所がありますのでそこを探してください。そのマクロ名には、同じようにパスが含まれているので、そのパスを消して上書きコピーすればOkです。