• ベストアンサー

自作アドインの使い方

エクセルで自作マクロを作りました。 内容的にはsheet1の全国の名簿を、都道府県単位でエクセルファイルに ふりわけるというものです。マクロ名は、furiwakeとしました。 これを「ふりわけ.xla」としておきました。 「ツール」→「アドイン」で有効なアドインとして「レ」を つけました。ここまではいいんです。 それでさっそく今月の「全国の名簿」を都道府県単位でエクセルファイルに振り分けたいのですが、どこを押せば、furiwakeマクロは実行されるのでしょうか?

  • bucch
  • お礼率61% (8/13)

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんばんは。 アドインは、本格的なものは、なかなか難しいのですが、簡単なものですと、通常、ツールバーに入れてあげるようにします。 >「ふりわけ.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

bucch
質問者

お礼

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

その他の回答 (5)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんにちは。 >アドインというのは、簡単にできると思ったら、ちがうんですね。 本館的なアドインは、デベロッパーなどというのは今さら(絶版)なのですが、デベロッパーを扱える人でないと本格的なものは作れないのです。デベロッパーなんて、Cost/Performance が悪すぎますからお勧めできるようなものでもありませんが、一応、この手の部類は、VBAの操作の中では、最難易度に入ります。VB6などの知識も必要とされるからです。そう、おどかしてもしょうがありませんし、掲示板では、そんな難しい話はするつもりはありません。 しかし、アドインは、もう少し研究が必要だと思います。掲示板であまりにも安易に教える方が多すぎるように思います。せめて、アドインの説明書を読んでからにしてほしいものだと思います。ネット内でも、ほとんど見当たりません。私も、昔、掲示板で質問したけれど、良く理解できませんでした。 >「sheet1の全国の名簿」に相当するファイルを毎月送る時に、ボタン代わりのオートシェイプをsheet1に作っておこうかと考えています。そのつどVBE画面を開いて、コードをこぴぺする手間だけは省きたいのです。 もしかしたら、アドインについて誤解されているかもしれません。アドインというものは、一言でいうと、私製マクロのグローバル化を目的とすることなのですね。グローバル化というのは、通常は、マクロを作ると、そのブックのプロジェクト内の標準モジュールで設置されたものしか呼び出せません。しかし、アドイン化することで、run で呼びなさなくても、どこでも呼び出しが可能になることをいいます。 ところが、コマンドボタン等のOnAction に、パス付きのブック名から登録しておくだけで、結局、HDDに存在するものなら、呼び出しは可能なのです。(アドインの場合は、起動時にメモリに呼び出されているから、結局は後か先かの違いだけなのです) さて、本題なのですが、 「ボタン代わりのオートシェイプをsheet1に作って」という段階まで、アドインで可能なのですしょうか?もし、そのレベルまでなら、私たちが、あれこれ仕様に関することまで言う権利などはないと思うのです。そのレベルというのは、メニューに入れる技術とそう変わらないからです。 #5のコードは、VBAの暗黙のマナーを守ったコードのつもりのものでした。それは、Excel 2000以上の時代に作られたルールのようなものです。それ以前は、そんな意識はなかったようです。有名な「ものさしマクロ」は、それ以前の発想で作られたものです。 http://hp.vector.co.jp/authors/VA016119/sizemm.html (以下の仕組みを理解できれば、試さなくても良いです) アドインを辞めてしまって、ユーザー設定のツールバーを備えたブックを作ればよいです。なぜ、こんなマクロを、現在まで出しているのか理由は分かりませんが、古い作り方としての、参考になります。 一旦、そのブックを開けると、そのツールバーは、相手のXLBファイル(メニューが確保されるファイル)にコピーされます。そうすると、そのツールバーは、必要なときに、ツールバーのユーザー設定にチェックさえ入れれば、呼び出し時間が掛かりますが、そのマクロは呼び出すことが可能です。 しかし、アドインは、レジストリに記録されますから、アドインの記録を消すよりはマシです。アドインを定位置に置いている限りは、存在しないものに関しては、プログラムでチェックされ、ダイアログで削除されます。だから、あまりあちこちには置かないほうがよいのです。 あまり大勢に配るようではありませんから、「ごめんなさい」が聞いてもらえるなら、自分である程度試してみて、見通しが立ったものを使わせてみると良いです。(VBAのコーディングの技術とは違いますから、やってみないと覚えない種類のものです) できるなら、マクロの組み立ての段階からチェックをしたほうがよいのですが……。

noname#90572
noname#90572
回答No.4

flow1997です。 >オートシェイプで任意の図形1をシート上に描き 『ふりわけ.xla!furiwake』 を登録したところ、無事できました。 >「ふりわけ.xla」ファイルはPCの どこにおいてあっても大丈夫でしょうか? >この「ふりわけ.xla」を相手に使ってほしいので、 相手のPC上においてもらいたいのです。 Excelアドインは通常非表示ですから、 ボタン代わりのオートシェイプは別ブックに置いたということですよね? そうすると、「別ブックから、ふりわけ.xlaのプログラムを呼び出す」という構成ではじめて動作するわけで、ふりわけ.xlaだけでの単独呼び出しはできないということになります。 相手のお宅にお邪魔して、正常動作するようにセッティングするのであれば別ですが、メールなどで送付する場合、正常動作しない可能性が非常に高いと考えます。 アドイン形式で配布するためには、ツールバーやメニューバーなどに登録するためのコードがどうしても必要だと思われます。普通のブックにマクロを組み込んで動かすのとは全く異なります。

bucch
質問者

お礼

ありがとうございます。 ひとまずこれでやってみます。 不特定多数の方に配布・利用するものでないので なんとかなってくれるといいなと思います。 --------------------------------------------------- 普通のブックにマクロを組み込んで動かすのとは全く異なります。 --------------------------------------------------- アドインというのは、簡単にできると思ったら、ちがうんですね。 私のよううな素人にとって高いハードルです。

bucch
質問者

補足

ありがとうございます ------------------------------------------------------------ そうすると、「別ブックから、ふりわけ.xlaのプログラムを呼び出す」という構成ではじめて動作するわけで、ふりわけ.xlaだけでの単独呼び出しはできないということになります。 ------------------------------------------------------------ 難しいことは私も無理なので、上記のような方法にするのが 精一杯です。「相手」はそれぞれ別のロケーションにいる2名です。 ------------------------------------------------------------ 相手のお宅にお邪魔して、正常動作するようにセッティングするのであれば別ですが、メールなどで送付する場合、正常動作しない可能性が非常に高いと考えます。 ------------------------------------------------------------ まずはあらかじめ「ふりわけ.xla」を2名にメールで送って、 ツール → アドイン → 「ふりわけ.xla」に「レ」を やってもうこととします。 そして私が二人に「sheet1の全国の名簿」に相当するファイルを 毎月送る時に、ボタン代わりのオートシェイプをsheet1に作って おこうかと考えています。そのつどVBE画面を開いて、コードを こぴぺする手間だけは省きたいのです。 私は素人ゆえ、この方法より難しいことは無理かもしれません。 ひとまず、コレでやってみようと思います。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

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

bucch
質問者

お礼

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

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

>どこを押せば、furiwakeマクロは実行されるのでしょうか? え~と、どんな場面で処理するか、どんなきっかけで処理するかは 先に考えておくべきことです ボタンなどはアドインすれば勝手にできるのではなく 自分で設置し、マクロを登録しなければいけません 私のよくやる方法は、メニューバーにボタンを作成したり 右クリックメニューボタンを作成したりしています 他にユーザー定義関数にして、関数として使用しています

bucch
質問者

お礼

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

noname#90572
noname#90572
回答No.1

メニューバーやツールバーに呼び出すためのボタンを配置し、 そこから呼び出すのが一般的です。 マクロの実行画面から呼び出せなくもないですが、 なにぶん表示されないため、手打ちで入力しないといけません。 例) ふりわけ.xla!furiwake

bucch
質問者

お礼

『ふりわけ.xla!furiwake』 ↑これ↑が知りたかったんです! 任意の図形をオートシェイプで描き、やってみました。 できました。 ありがとうございました。 「ふりわけ.xla」を使っていただきたい方々が、年配者や エクセル操作に不慣れであることを想定していましたので たすかりました。

bucch
質問者

補足

みなさまありがとうございます。 オートシェイプで任意の図形1をシート上に描き 『ふりわけ.xla!furiwake』 を登録したところ、無事できました。 また「ふりわけ.xla!」のなかに 「furiwake2」「furiwake3」という「furiwake」とは 働きのそれぞれ異なるマクロをそれぞれModule2,Module3に 作成して、それぞれ図形2、図形3に割り当てたところ これらもうまくいきました。 またこれらの図形を新たな「sheet1の全国の名簿」に こぴぺしてもうまくいきました。 「ふりわけ.xla」ファイルはPCの どこにおいてあっても大丈夫でしょうか? この「ふりわけ.xla」を相手に使ってほしいので、 相手のPC上においてもらいたいのです。誤って 削除されないよう「ふりわけ.xla!」は読み取り専用に しておいたほうが、よりよいということになりますでしょうか。

関連するQ&A

  • Excelから自作アドインを完全に削除したい

     初めてアドイン(xlaファイル)を作ったのですが、いったん組み込んでしまうと、アドインから削除できなくて困っています。  「ツール」→「アドイン」で、チェックボックスを外すと機能は使えなくなるのですが、アドインの一覧から消すことができないのです。  消し方をご教授ください。よろしくお願いします。

  • 自作アドインのFunctionプロシージャの戻り値を取得

    ExcelVBAのコード内で、自作アドインのFunctionプロシージャを呼び出して戻り値を取得したいのですが、方法がわかりません。 例えば、AddinTest.xlaにPublic Function FuncTest()があり、その戻り値が"Test"だとして、他のExcelファイルのマクロ内で、Msgboxで戻り値"Test"を表示するなど。。。 アドイン内のSubプロシージャを呼び出すには、Application.Run macro:="AddinTest.xla!~"と記述すれば呼び出せることはわかったんですが、Functionプロシージャの戻り値を取得することができないのです。 よろしくご教授ください。

  • Excel:アドイン自作の方法は?

    Excelのアドインを自作したいのですが、 どのようするのでしょうか? マクロの作成方法、VBAについてはある程度知識があります。 (何度かマクロを作成したことはあります) アドインは結局VBAで組まれたもの、とネット上で見かけました。 しかし、具体的な作り方分かりません。 特に、「ツール(T)」-「アドイン(I)」で組み込む状態の*.x?a,*.xllファイルの作成方法。 アドインの作成方法について紹介してあるサイト、書籍などがありましたら教えていただけますか? 【補足】 OS:WindowsXP SP2 Excel:Excel2000

  • アドインの組込みとブックが開くタイミングがずれる

    全てのブックで使用するアドインを作成しました(AddIn.xlaとします)。 Excelの起動時にアドインが自動で組み込まれるように、アドインファイルをXLSTARフォルダに入れました。 あるブック(Book.xlsとします)の Workbook_Openイベントで AddIn.xlaに含まれるプロシージャを実行する時に、次のような問題が出ました。 エクスプローラから Book.xls をダブルクリックして開くと、AddIn.xlaに含まれるプロシージャを実行するところでエラーが出ます。 Excelを起動して、メニューバーから Book.xls を開くと、問題ありません。 この症状は、PCによって出るものと出ないものがあります。 エラーの状況から見ると、AddIn,xla が組み込まれるタイミングと Book.xla の Workbook_Openイベントが実行されるタイミングにずれがあるように見えます。 AddIn.xla が組み込まれるまで Book.xls を開かないようにすることは可能でしょうか。

  • アドインファイルの作り方

    マクロを作成して、人に配ろうかと考えています。ツールバーにコマンド追加してマクロを登録しました。ユーザー設定で、ツールバーの添付で保存(xls)して、別にアドインファイル(xla)で保存しました。別のパソコンにアドインすると、Personal.xlsにマクロが見つかりません。って出てきます。自分のパソコンにもどって、アドインし、コマンドを実行すると、元のxlsファイルが自動的に読み込まれて、実行できてしまいます。ユーザー設定を開きマクロの登録を見てみると、元のxlsファイルが関連付けられてしまっています。(因みに、マクロは、Private としています。 どうにか?アドインファイルだけで完結したいのですが、どのようにすればいいのでしょうか?教えてください。宜しくお願い致します。

  • Excel2003でアドインの更新ができない

    お世話になります。 環境は、WindowsXp Sp3 + Excel2003 Sp3 です。 VBAでプログラムを作成し"sss.xla"で保存します。 この"sss.xla"を"C:\Documents and Settings\<USER>\Application Data\Microsoft\AddIns"へ入れます。 Excelを起動しツール→アドインを開くと作成したアドインが表示されているのでチェックします。 また、チェックをはずすとアドインが無効になります。 アドイン(マクロ)の起動には「CTRL+SHIFT+J」を関数(サブルーチン)「sss」へ割り当てています。 ここまでは問題なく動作しています。 "sss.xla"を修正します(たとえば、足し算していたものが間違っていて掛け算に修正する等です)。 この修正した"sss.xla"を上記のフォルダーへ上書きコピーします。 Excelを起動してアドインを動かしてみると修正前のものが動いてしまいます。 (セルに色をつけたりもしていますので明らかに修正前のものが動いています。) インターネットでいろいろ探してみたところ、 「"C:\Program Files\Microsoft Office\OFFICE11\Library"へ"sss.xla"を入れると大丈夫」 との情報があったので試してみましたがだめでした。 アドインを無効にし"・・・\AddIns"から削除して"・・・\Library"へ入れています。 "sss.xla"本体とは別にどこかにキャッシュされたりしているのかとも思い、Cドライブを"sss.xla"で全検索したり、レジストリーを検索したりしましたがそれらしいものは見つかりませんでした。 (ファイルそのものは削除しているので、どこかにキャッシュされているのだろうと思いました。) さらに修正した"sss.xla"を"sss101.xla"としてアドイン登録しても動くのは"sss.xla"が動いてしまいます。 どうすれば修正した"sss.xla"を動かすことができるようになるでしょうか。 よろしくお願いします。

  • Excelのアドイン

    Excelのアドインを作成しています。 特定のファイルにだけ適用したいため、そのファイルのWorkbookのopenイベントでAddin.Installed = Trueにするようにしています。 Addin.Installed = Falseにするタイミングをアドイン側(xlaファイル)のWorkbookのcloseイベントに入れてしまうと Addin.Installed = Falseにした時点で自分自身(xlaのWorkbook_close)を呼び出してしまいます。 if Addin.Installed = Trueを入れていますのでAddin.Installed = Falseが2回実行されるわけではないのですが 再帰的な呼び出しを回避する方法はないでしょうか? 終了時にexcelがエラーを起こして "エラー送信"画面が出てしまって ここら辺があやしいのではと思っています。 環境はWindowsXP Excel2002 SP3 です。

  • エクセルアドインの自動インストール

    エクセルアドインを自動的にインストールする方法 に関して質問があります。 現在、作成したエクセルアドインを以下の手順で登録しています。 (1)エクセルを開く。 (2)メニューから「ツール」→「アドイン」でアドイン画面を開く。 (3)「参照」ボタンを押してアドイン(.xla)を選択する。 この一連の作業をインストーラの実行のように 一発で完了させたいのですが可能でしょうか? インストールシールドなどのツールを使えばできる等の情報でも 構いませんのでご存知の方がいましたら教えてください。 WindowsXP+Excel2003

  • エクセルのアドイン操作

    何もマクロが組み込まれていないエクセルファイルを 開いたときに、自動でアドイン「テストアドイン」をインストール する良い方法はないでしょうか? 現在は、テストアドインのインストールを実行するマクロファイルを XLSTARTフォルダに置いています。

  • アドインファイルの移動

    Excelのアドインファイルを移動する必要が出てきたのでVBAで移動させようとしています。 VBAは、アドインとは別のExcelファイルにコーディングしています。 アドインファイル名は MyAdd.xla とします。 MyAdd.xla を新フォルダに移動させることはできましたが、参照元の変更がうまくできません。 設定するPCの台数が多いので、自動で処理したいのです。 よろしくお願いします。 AddIns("MyAdd").Installed = False AddIns.Add Filename:= "新フォルダパス\MyAdd.xla" AddIns("MyAdd").Installed = True

専門家に質問してみよう