プロが教えるわが家の防犯対策術!

エクセルで自作マクロを作りました。
内容的にはsheet1の全国の名簿を、都道府県単位でエクセルファイルに
ふりわけるというものです。マクロ名は、furiwakeとしました。
これを「ふりわけ.xla」としておきました。
「ツール」→「アドイン」で有効なアドインとして「レ」を
つけました。ここまではいいんです。

それでさっそく今月の「全国の名簿」を都道府県単位でエクセルファイルに振り分けたいのですが、どこを押せば、furiwakeマクロは実行されるのでしょうか?

A 回答 (6件)

こんばんは。



アドインは、本格的なものは、なかなか難しいのですが、簡単なものですと、通常、ツールバーに入れてあげるようにします。

>「ふりわけ.xla」ファイルはPCの
>どこにおいてあっても大丈夫でしょうか?

アドインの基本的なことなのですが……。公開アドインを出している人でも、ここらがいい加減の人もいますが、私などは、配布する場合は、インストーラーを使います。
これは、バージョンによっても変わってきます。

C:\Documents and Settings\[User ID]\Application Data\Microsoft\AddIns\

必ずしも、以下が正しいわけではありませんが、例えば、フローティングバーを作る場合、このようなものになります。Office 2007 では、以下は、アドインというメニューの中に入ってしまいます。

ただ、私個人は、フローティングバーは好きではありませんが、アドインで、そういう作り方をする人が多いです。どんなスタイルでも、Temporary 属性は、不可欠ですから、忘れないようにしてください。
Office 2007 では、以下のコードは、あまりお勧めできません。

Sub FloatingMenu()
Dim myCBCtrl As CommandBar
Dim my_Ctrl As CommandBarControl
 On Error Resume Next
  CommandBars("MyMacro").Delete
 On Error GoTo 0
 
 Set myCBCtrl = CommandBars.Add(Name:="MyMacro", _
 Position:=msoBarFloating, _
 MenuBar:=False, _
 Temporary:=True)
 Set my_Ctrl = myCBCtrl.Controls.Add(Type:=msoControlButton)
 With my_Ctrl
  .Caption = "新マクロ1"
  .OnAction = "UserMarco"
 End With
 myCBCtrl.Visible = True
End Sub
Public Sub UserMarco()
 MsgBox Time
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます

すみません、私にはハードルが高すぎる無いようです。
理解できなくてすみません。

まずはあらかじめ「ふりわけ.xla」を別ロケの2名にメールで送って、
ツール → アドイン → 「ふりわけ.xla」に「レ」を
やってもうこととします。
そして私が二人に「sheet1の全国の名簿」に相当するファイルを
毎月送る時に、ボタン代わりのオートシェイプをsheet1に作って
おこうかと考えています。そのつどVBE画面を開いて、コードを
こぴぺする手間だけは省きたいのです。

私は素人ゆえ、この方法より難しいことは無理かもしれません。
ひとまず、コレでやってみようと思います。

お礼日時:2009/05/18 00:38

こんにちは。



>アドインというのは、簡単にできると思ったら、ちがうんですね。

本館的なアドインは、デベロッパーなどというのは今さら(絶版)なのですが、デベロッパーを扱える人でないと本格的なものは作れないのです。デベロッパーなんて、Cost/Performance が悪すぎますからお勧めできるようなものでもありませんが、一応、この手の部類は、VBAの操作の中では、最難易度に入ります。VB6などの知識も必要とされるからです。そう、おどかしてもしょうがありませんし、掲示板では、そんな難しい話はするつもりはありません。

しかし、アドインは、もう少し研究が必要だと思います。掲示板であまりにも安易に教える方が多すぎるように思います。せめて、アドインの説明書を読んでからにしてほしいものだと思います。ネット内でも、ほとんど見当たりません。私も、昔、掲示板で質問したけれど、良く理解できませんでした。

>「sheet1の全国の名簿」に相当するファイルを毎月送る時に、ボタン代わりのオートシェイプをsheet1に作っておこうかと考えています。そのつどVBE画面を開いて、コードをこぴぺする手間だけは省きたいのです。

もしかしたら、アドインについて誤解されているかもしれません。アドインというものは、一言でいうと、私製マクロのグローバル化を目的とすることなのですね。グローバル化というのは、通常は、マクロを作ると、そのブックのプロジェクト内の標準モジュールで設置されたものしか呼び出せません。しかし、アドイン化することで、run で呼びなさなくても、どこでも呼び出しが可能になることをいいます。

ところが、コマンドボタン等のOnAction に、パス付きのブック名から登録しておくだけで、結局、HDDに存在するものなら、呼び出しは可能なのです。(アドインの場合は、起動時にメモリに呼び出されているから、結局は後か先かの違いだけなのです)

さて、本題なのですが、
「ボタン代わりのオートシェイプをsheet1に作って」という段階まで、アドインで可能なのですしょうか?もし、そのレベルまでなら、私たちが、あれこれ仕様に関することまで言う権利などはないと思うのです。そのレベルというのは、メニューに入れる技術とそう変わらないからです。

#5のコードは、VBAの暗黙のマナーを守ったコードのつもりのものでした。それは、Excel 2000以上の時代に作られたルールのようなものです。それ以前は、そんな意識はなかったようです。有名な「ものさしマクロ」は、それ以前の発想で作られたものです。

http://hp.vector.co.jp/authors/VA016119/sizemm.h …
(以下の仕組みを理解できれば、試さなくても良いです)

アドインを辞めてしまって、ユーザー設定のツールバーを備えたブックを作ればよいです。なぜ、こんなマクロを、現在まで出しているのか理由は分かりませんが、古い作り方としての、参考になります。

一旦、そのブックを開けると、そのツールバーは、相手のXLBファイル(メニューが確保されるファイル)にコピーされます。そうすると、そのツールバーは、必要なときに、ツールバーのユーザー設定にチェックさえ入れれば、呼び出し時間が掛かりますが、そのマクロは呼び出すことが可能です。

しかし、アドインは、レジストリに記録されますから、アドインの記録を消すよりはマシです。アドインを定位置に置いている限りは、存在しないものに関しては、プログラムでチェックされ、ダイアログで削除されます。だから、あまりあちこちには置かないほうがよいのです。

あまり大勢に配るようではありませんから、「ごめんなさい」が聞いてもらえるなら、自分である程度試してみて、見通しが立ったものを使わせてみると良いです。(VBAのコーディングの技術とは違いますから、やってみないと覚えない種類のものです)

できるなら、マクロの組み立ての段階からチェックをしたほうがよいのですが……。
    • good
    • 0

flow1997です。



>オートシェイプで任意の図形1をシート上に描き
『ふりわけ.xla!furiwake』
を登録したところ、無事できました。
>「ふりわけ.xla」ファイルはPCの
どこにおいてあっても大丈夫でしょうか?
>この「ふりわけ.xla」を相手に使ってほしいので、
相手のPC上においてもらいたいのです。

Excelアドインは通常非表示ですから、
ボタン代わりのオートシェイプは別ブックに置いたということですよね?

そうすると、「別ブックから、ふりわけ.xlaのプログラムを呼び出す」という構成ではじめて動作するわけで、ふりわけ.xlaだけでの単独呼び出しはできないということになります。

相手のお宅にお邪魔して、正常動作するようにセッティングするのであれば別ですが、メールなどで送付する場合、正常動作しない可能性が非常に高いと考えます。

アドイン形式で配布するためには、ツールバーやメニューバーなどに登録するためのコードがどうしても必要だと思われます。普通のブックにマクロを組み込んで動かすのとは全く異なります。

この回答への補足

ありがとうございます
------------------------------------------------------------
そうすると、「別ブックから、ふりわけ.xlaのプログラムを呼び出す」という構成ではじめて動作するわけで、ふりわけ.xlaだけでの単独呼び出しはできないということになります。
------------------------------------------------------------

難しいことは私も無理なので、上記のような方法にするのが
精一杯です。「相手」はそれぞれ別のロケーションにいる2名です。

------------------------------------------------------------
相手のお宅にお邪魔して、正常動作するようにセッティングするのであれば別ですが、メールなどで送付する場合、正常動作しない可能性が非常に高いと考えます。
------------------------------------------------------------

まずはあらかじめ「ふりわけ.xla」を2名にメールで送って、
ツール → アドイン → 「ふりわけ.xla」に「レ」を
やってもうこととします。
そして私が二人に「sheet1の全国の名簿」に相当するファイルを
毎月送る時に、ボタン代わりのオートシェイプをsheet1に作って
おこうかと考えています。そのつどVBE画面を開いて、コードを
こぴぺする手間だけは省きたいのです。

私は素人ゆえ、この方法より難しいことは無理かもしれません。
ひとまず、コレでやってみようと思います。

補足日時:2009/05/18 00:07
    • good
    • 0
この回答へのお礼

ありがとうございます。

ひとまずこれでやってみます。
不特定多数の方に配布・利用するものでないので
なんとかなってくれるといいなと思います。
---------------------------------------------------
普通のブックにマクロを組み込んで動かすのとは全く異なります。
---------------------------------------------------

アドインというのは、簡単にできると思ったら、ちがうんですね。
私のよううな素人にとって高いハードルです。

お礼日時:2009/05/18 00:29

(1)シートのボタンに登録する(シートに依存と言うことではではない、どのシートからでも使えるが)


(2)メニューバーに登録する。
(3)プロシージャーとしてアドイン名を使う。
ーーー
(1)のやり方は
http://www.geocities.jp/ttak_ask/office_docu/ef1 …
が一番詳しそう。
しかし複雑。結局ボタンにマクロを登録するようなものと考えて読んでください。
ーー
もし上記WEBの説明で判らずうまく行かないときは
ツールーユーザー設定
「コマンド」タブの「分類」で「マクロ」を選ぶ
右のほうに、ユーザー設定ボタンが現れるから
シートのメニューのヘルプの隣の辺りへD&D
そのボタンの上で右クリック。
マクロの登録で、そのアドイン名を登録。
    • good
    • 0
この回答へのお礼

ありがとうございました。
参考になりました。
ひとつのマクロだけを登録したいときはこれは便利ですね。
_____________________________________________
「コマンド」タブの「分類」で「マクロ」を選ぶ
右のほうに、ユーザー設定ボタンが現れるから
シートのメニューのヘルプの隣の辺りへD&D
そのボタンの上で右クリック。
マクロの登録で、そのアドイン名を登録。
_____________________________________________

お礼日時:2009/05/17 22:29

>どこを押せば、furiwakeマクロは実行されるのでしょうか?


え~と、どんな場面で処理するか、どんなきっかけで処理するかは
先に考えておくべきことです
ボタンなどはアドインすれば勝手にできるのではなく
自分で設置し、マクロを登録しなければいけません

私のよくやる方法は、メニューバーにボタンを作成したり
右クリックメニューボタンを作成したりしています
他にユーザー定義関数にして、関数として使用しています
    • good
    • 0
この回答へのお礼

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

相手方に使ってもらいたいアドイン(マクロ)としています。
相手方が年配の方々なので、操作が平易で一目でわかるよう
大きなボタンにしてあげたいので、オートシェイプで任意の
図形をシート上に描いて、そこに登録することにしました。
------------------------------------
私のよくやる方法は、メニューバーにボタンを作成したり
右クリックメニューボタンを作成したりしています
他にユーザー定義関数にして、関数として使用しています
_____________________________________________

お礼日時:2009/05/17 22:36

メニューバーやツールバーに呼び出すためのボタンを配置し、


そこから呼び出すのが一般的です。

マクロの実行画面から呼び出せなくもないですが、
なにぶん表示されないため、手打ちで入力しないといけません。
例) ふりわけ.xla!furiwake

この回答への補足

みなさまありがとうございます。

オートシェイプで任意の図形1をシート上に描き
『ふりわけ.xla!furiwake』
を登録したところ、無事できました。
また「ふりわけ.xla!」のなかに
「furiwake2」「furiwake3」という「furiwake」とは
働きのそれぞれ異なるマクロをそれぞれModule2,Module3に
作成して、それぞれ図形2、図形3に割り当てたところ
これらもうまくいきました。
またこれらの図形を新たな「sheet1の全国の名簿」に
こぴぺしてもうまくいきました。

「ふりわけ.xla」ファイルはPCの
どこにおいてあっても大丈夫でしょうか?

この「ふりわけ.xla」を相手に使ってほしいので、
相手のPC上においてもらいたいのです。誤って
削除されないよう「ふりわけ.xla!」は読み取り専用に
しておいたほうが、よりよいということになりますでしょうか。

補足日時:2009/05/17 21:25
    • good
    • 0
この回答へのお礼

『ふりわけ.xla!furiwake』
↑これ↑が知りたかったんです!
任意の図形をオートシェイプで描き、やってみました。
できました。
ありがとうございました。

「ふりわけ.xla」を使っていただきたい方々が、年配者や
エクセル操作に不慣れであることを想定していましたので
たすかりました。

お礼日時:2009/05/17 22:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!