• ベストアンサー

ユーザー定義関数をEXCELに常駐させたい

VBAの標準モジュールで作成したユーザー定義関数を、*.bas形式でエクスポートしています。 エクセルを立ち上げるたびに、インポートしなければならず、非常に手間です。 また、*.basファイルを職場の仲間にも広めたいと思っているのですが、毎度インポートすることになると、面倒になります。 そこで、誰のEXCEL本体にも常駐させ、SUM関数のようにいつでも使用できる状態にするにはどうすればいいでしょうか?

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

  • ベストアンサー
  • 11369
  • ベストアンサー率29% (20/67)
回答No.3

アドイン登録すれば可能です。 作成したマクロをxlaでaddinsフォルダに保存した後、エクセルの[ツール]-[アドイン]で登録すればOK 注意しなければいけないのは、そのユーザー関数を使用して作成したエクセルブックを他の人に渡す場合、その関数のないパソコンでは開いても結果が表示されなくなります。以前、客先にそのファイルを渡してしまい、とんだトラブルを招きました。また、バージョン管理をできるようにしておかないと新しいものと古いものが混在する結果を招きます。 私も以前、同様な試みをしましたが、管理しきれないので断念しました。 ユーザー関数は個人で使用するようにしています。

D_HILL_FW17
質問者

お礼

EXCELのアドイン機能については、今まで使ったことがなく、今回のご教授で、非常に役に立つ機能だということを、実感しました。 この方法で、無事に多くの仲間に使ってもらうことができるようになりました。今後のプログラミングの幅も広がったような気がします。 ありがとうございました。

その他の回答 (2)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

ユーザ定義関数のモジュールを.xla形式で保存し、  \Microsoft Office\Office\XLStart配下 に登録しておけばEXCELのアプリケーション起動時にモジュールシートも起動できますが、「誰のEXCEL本体にも」といわれると、自動ではできないでしょう。各人にインストールを依頼しましょう。 (それができたらウィルスになってしまいます)

  • s_yoshi_6
  • ベストアンサー率73% (1113/1519)
回答No.1

こちらなどが参考になるのではないでしょうか。 Excelでユーザー定義関数をアドインとして提供する http://www.atmarkit.co.jp/fwin2k/win2ktips/471funcadin/funcadin.html

関連するQ&A

  • エクセルのユーザー定義関数で(VBA)

    エクセルのVBAで、セルに「=SheetName」と書き込めば、その関数を書き込んだセルが属するシート名をセルに代入さるようなユーザー定義関数を作りたいと考えています。 で、標準モジュールに Public Function SheetName(test) SheetName = ????? End Function と、書き込んでふと止まりました。 ユーザー定義関数を書き込んだシートの名前ってどうやって取得すればいいのでしょうか?VBでいうSenderみたいなのってあるんでしょうか? どなたか?詳しい方教えて頂けないでしょうか? 宜しくお願いいたします。

  • クラスの関数へユーザー定義型の引数を渡す(VB6.0)

    お世話になります。 クラスモジュール内へ宣言した関数へユーザー定義型(標準モジュール内でPublicで宣言)の引数を渡すとコンパイルエラーとなってしまいます。 ユーザー定義型を宣言した以外の標準モジュールでは同じ関数は動きますが、Formモジュールでは動きません。 標準モジュールにしかユーザー定義型の引数を渡すことは出来ないのでしょうか??

  • エクセルでユーザー定義関数を作りたい

    エクセルのVBAで、セルに「=findright(セル名,対象)」と書き込めば、その関数を書き込んだセルの右から対象を探してくれる関数を作りたいです。find関数は左から検索してしまいますよね?右から検索したいのです。 <例>セル(a2)から右から数えて何番目に★があるか? =findright(a2,"★") 標準モジュールに書き込んだあとの手順も教えていただけないでしょうか? よろしくお願い致します。

  • Excelのユーザー定義関数について

    win98seでExcel2000を使用しています。 標準の関数を使用する際、「挿入」→「関数」で「関数の貼付け」ダイアログがでますよね。その後、使用する関数名をクリックすとダイアログボックス内の下のほうに説明文が表示されます。 その説明文をユーザー定義関数にも付けたいのですが、どうすれば良いのでしょうか?どなたか宜しくお願いいたします。

  • Excel:VBAに関して

    バグがある標準モジュール(.bas)がぶら下がっていて、それをバグ修正したモジュールに切り替えたいのです。バグあるモジュールをエクスポートして、新規に改修したモジュールをインポートすれば良いのでしょうが、本数が多くて困ってます。 複数のExcelファイルを対象に、モジュールの入れ替えを行うのに何か良い案はありますでしょうか? Excel VBAでできれば良いのでしょうが、、マクロでそんなことできませんよね・・・?

  • エクセルでインポートした標準モジュールが動かないのです。

    エクセル97VBA対応のVB6で作成されたプログラムを書いてある通りに、VBEでインポートしました。 しかし、標準モジュールには表示されているのですが関数の中には表示されないのです。 ユーザー定義関数では無くて別の方法で動かすものなのでしょうか? (Calc_Kyureki "2002","5","26"と入力しても名前が間違っていますと出てしまいます) それともエクセル2003では、エクセル97のVBAを動かすには何か別のインポートの仕方があるのでしょうか? 以下のベクターのソフトです。 旧暦 for VB Visual BasicまたはExcel VBAで旧暦を計算する標準モジュール(ソース付き) http://www.vector.co.jp/soft/dl/win95/personal/se243537.html 助けて下さい。宜しくお願い致します。

  • Excelでユーザー定義関数が#NAMEと返される

    EXCELでユーザー定義関数を使用しています。 作成時は問題なく動いていたものの、保存後一度閉じたものを再度開いて数式を更新させると「#NAME」と表示されるエラーが出てしまいます。 関数は標準モジュールで定義しています。 ファイルは.xlsxで作成後、.xlmxにして保存しています。 解決方法をご存じの方がいましたら、ご教授いただければ幸いです。

  • エクセル VBAで関数を定義したけれどもうまくいかない

    以前ここで教えていただいた方法ですが、 セルB1からB100までのいずれかを変更した際に プロシージャが起動する方法として まず VBAで標準モジュールに 関数を定義して Function mykansu(dum As Range) for i=1 to 100 if cells(i,2)=1 then cells(i,6)="yes" next i End Function そしてexcelシートでセルA1に =mykansu(B1:B100) とやれば、B列の変更を加えたらプロシージャが起動する と教えていただきました。 しかし A1に #Value と出たきりでVBAのプロシージャが動かないのはなぜでしょうか。教えてください。

  • エクセルのCOUNTA関数について

    エクセルのCOUNTA関数について COUNTA関数の 文字列に 取り消し線を入れたセルを、無視するようにしたいです。VBAによる標準モジュールのコードを教えてください。質問番号:3526540に似ています。質問番号:3526540は、SUMの場合でした、COUNTAでのコードを教えてください。

  • エクセルでSearch()関数が使えない

    エクセルVBAで標準モジュールに関数を作って その関数の中で  Search()を使うと 関数が定義されてない、というエラーになります Search()関数は基本的な関数であるし Search(",",str)  とか引数の記入違いであれば違うエラーが出ると おもうのですが? WindowXPでExcel2003を使っています あるいは参照関係かとおもったのですが、  この知識がないのでどう直していいかわかりません 念の為、ツール→参照設定をみてみると 次の4つがチェックマークが付いているのですが ・Visual Basic for Application ・Microsoft Excel 11.0 Object library ・OLE Application ・Microsoft Office 11.0 object library