• ベストアンサー

特定のエクセルブックでしか機能しないアドイン

VBAでエクセルのアドインを作っております。 特定のエクセルブックでしか機能しないアドインの作り方はあるでしょうか? たとえばファイル名「対象ブック」というのがあったとして、 このブックでしかアドインが機能しないようにするにはどうしたらいいでしょうか? アドインのコード中に機能するブック名を直接書きこむことで指定するのが 手っ取り早いのでしょうか?

  • R958XX
  • お礼率75% (165/219)

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

  • ベストアンサー
noname#222556
noname#222556
回答No.2

アドインは、ThisWorkbookオブジェクトに記述するので、 基本的には「開いたExcelブックすべてで使用できるもの」だと思います。 マクロをリボンに登録しておいて、リボンから選択して実行、 というのはいかがでしょうか。 http://www4.synapse.ne.jp/yone/excel2013/excel2013_macro_ribbon.html アドインを配布してどのPCからも同じ操作が出来る様にしたい、 という場合だと、特定の条件とツールを用いてリボンごと配布する手もあります。 http://qiita.com/fmaeyama/items/93d10a1a5cd6cd6e9dd8 お試しください。

R958XX
質問者

お礼

ありがとうございます。適宜リボンから操作するという方向でやってみます。

その他の回答 (1)

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

どういう困った事態が起こることを予想(または起こった)ことを防ごうとしているのか、を書かないと、質問として、回答者に不十分ではないか? 他のブックでは混乱するとか、または使用権などのことか。 ファイルにもいろんな属性を持っている。名前とか作成日時とかエクセルバージョンとか 想像されるが、名前に注目する理由はどこに注目しているのか。

R958XX
質問者

補足

ご指摘ありがとうございます。特定のブック(例えば商談管理台帳とか薬品管理台帳とか)を作る場合、そのブックだけで使えるマクロをショートカットキーで動作するようにしたいと思います。目的は入力簡略化とかいったためだと思ってください。ただ、そのブックでだけ使いたいので他の任意のブックではマクロが無効化されていないと困ります。そのため冒頭の質問を投稿させていただきました。なお、「ファイル名で」というのはファイル名が既に決まっているため、それで指定できないかと思いました。

関連するQ&A

  • EXCELのアドインについて

    EXCELにアドインを入れたのですが、アドインを入れる前に作ったブックを開いてアドインによって使いされた機能を使おうとするとその機能がなく使うことができません。どのようにすれば、使うことができるようになるのですか。

  • Excelアドインの非表示ブック

    Excelアドインを配布する予定なのですが、シートにプログラムで使う情報を記載しており、その情報は公開したくない状況です。 Excelアドインを作成するとブックが非表示になりますが、それを表示する方法はあるのでしょうか? もし、表示出来る方法があるのならば、どうすれば表示できない様にする方法はありますか? Excelアドインの元となるExcelファイルの作成環境はExcel2007ですが、ブックは2003にも対応した.xls拡張子で作成しています。 以上、ご教授のほど、よろしくお願い致します。

  • EXCELのアドインが複数のブックで利用できない。

    EXCELのアドインが複数のブックで利用できません。 (1)EXCELのアドインを4個組み込むと右クリックメニューに4個追加されますが、ある別のブックだと右クリックメニューに2個しか表示されない。 (ちなみに別のブックに表示されない2個のアドインは、そのブックで単独で設定しても右クリックメニューに追加されない。) (2)EXCELのアドインを4個組み込んだプックを閉じて、再度立ち上げると追加した右クリックメニューが1個消えます。 アドインを調べると設定されており、その消えるアドインのみを単独で設定すると右クリックメニューは保持されます。 一度設定すると、設定が保持されて複数のブックで利用するには、どうしたら良いでしょうか。 フリーのアドインと自作のアドインなんですが、考えられる原因について教えて下さい。

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

    全てのブックで使用するアドインを作成しました(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 を開かないようにすることは可能でしょうか。

  • エクセル2007 VBAのアドインの方法が分かりません。

    エクセル2007 VBAのアドインの方法が分かりません。 2003ではツールから簡単に出来ましたよね?アドインというリボンは出せたのですがどうしたらxlamファイルをアドインできるのでしょうか? 宜しくお願い致します。

  • 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 です。

  • Excel アドインの更新配布について

    今、アドインにてユーザ定義関数を使用しています。 アドイン内の関数を修正しているのですが、 最新版がどれか分かるように、バージョンを記載しようと考えています。 アドインのVBA内に記載すればいいのですが、それだとファイル名で管理出来ないため、 後々面倒だと思い、アドインファイル名自体を変更したのですが、 既に、旧アドイン内の関数を利用しているエクセルシート内で 旧バージョンのアドインファイルを読みに行こうとしてエラーが出てしまいました。 通常、どのような管理方法をするのか教えてください。

  • VBA 複数ブックへ書き込み

    VBA初心者です。 1つのフォルダ内にある100(ファイル名001から100)個のエクセルファイル(ブック)の特定の場所(すべてのエクセル ファイルはファイル名は違うが、同一のシート名で同一のセルの構造になっている。 以上に対して、1つのもとになるファイルA(ブック、シート)の特定のセル(同一列の行を上から順次下る)セルの値を先の同一フォルダ内のエクセルファイル100(001~100)個に対して、ブックオープン、特定セルのデリート、特定セルへの書き込み、ブック保存という一連の作業を行いたいです。 多数のファイルから1つの集計ファイルに値を読み込んできて書き込むサンプルはあるようですが、逆に1つのファイルから同一フォルダ内の多数のファイル(ブック)の特定場所に書き込むためのサンプルコードを教えていただけると大変助かります。 以上よろしくお願いいたします。

  • Excelのアドインについて

    環境はExcel2000,WindowsXPです。 Excelを開いて、アドインを「参照」から指定して使用するのですが、使用後、アドインアンインストールしてExcelを閉じると、再びExcelを開いてアドインを使用する場合、また参照からアドインを指定しなくてはならなくなってしまいました。 以前は一度使用したアドインは一覧に残っている筈なのですが、いつからか分かりませんが、そのようになってしまいました。 この解決法をご存じの方いましたらアドバイス願いします。 宜しくお願いします。

  • アドインについて

    エクセルvbaに組み込む”アドイン”と言うものも vbaで作れるんでしょうか? アドインと言うのは別のソフトなどで作るのですか?

専門家に質問してみよう