• ベストアンサー

エクセルで個人用マクロの配布方法

このたびわたしが作成した業務用の簡単なマクロを社内の他部門(遠隔地)の10名ほどのかたがたにメールで配布して使っていただくことになりました。 自分では個人用マクロブックに登録し、任意のエクセルのシートに対して使用していたものです。 一応そのマクロだけをエクスポートしてModule1.basというファイルは作ったのですが、これまでマクロそのものを配布したことがないので送った先の人にどうインポート方法を説明したらよいのかわかりません。多分マクロはよく知らないひとたちのはずです。 いい説明方法があれば教えてください。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.13

> 成功しました!!他の端末へのインストールも出来ました。 おお!それは、よかった!(^^) > 再度送付してあげれば相手のアドインは上書きされると思ってよい > のでしょうか? ええ、最初から修正やバージョンアップはあるものとして、考慮して ましたから、その手順で大丈夫ですよ。 それでは、さらに一歩進んで、、 アドイン化したものは、どんな時に実行されるか保証されないので、 注意が必要です。つまり、ActiveSheet がない状態でメニューを クリックすることも、あり得るってことです。この場合、エラーの 発生が予想されますね。 エラーが発生して、「デバッグしますか?」と聞かれたり、デバッグ モードの VBE 画面がでてきたら、初心者の方はビックリしてしまう でしょう。 ですから、コードの冒頭でそれをトラップしてやらなければなりま せんし、VBA プロジェクトも保護しておいた方が良いでしょう。 VBA プロジェクトの保護は、VBE のプロジェクトエクスプローラーで MyADDIN を選択し、右クリック[VBA プロジェクトのプロパティー] から行います。 トラップの方法は、例えば Selection ならセル以外が選択されて いてはマズイ場合、 IF Ucase$(Typename(Selection))<>"RANGE" Then Exit Sub のようにコードの冒頭に書き込みます。On Error ~ ステートメント も必要があれば使います。 関数もワークシート関数として使われたくない場合は Private Function にしてしまうか、次のように Caller を使ってトラップします。 Function Test(A As Variant) As String   ' ワークシート関数として使えないようにする   If UCase$(TypeName(Application.Caller)) = "RANGE" Then     Exit Function   End If   '~ 処理 ~ End Function こうすると、VBA からしか使えない関数になります。 この辺は、場数を積めば勘処が養えるので、無理に今全部やる必要は ありません。エラーが発生したときに困ったら、読み返してみて下さい。 以下は、余談です。 ・プロシージャ Count_Net の x = ActiveSheet.UsedRange.Cells(ActiveSheet.UsedRange.Count).Row は x = rngTarget(rngTarget.Count).Row の方が良いと思います。 ・プロシージャ Del_Sqt について これは、前回のご質問のやつですよね。そちらに手が回らず、済みません。 アドイン化、、大変だったと思いますが、いろいろやってみて下さい。 自分にとって都合がよく便利で、自分だけのツールが作れますよ。 では、頑張って下さい。 あ、慣れてきたら、アドインの名前はもっとセンスのいいヤツに変えて 下さいね。MyADDIN って適当につけたヤツなので(^^;)

merlionXX
質問者

お礼

最後の最後までご親切にありがとうございました。 KenKenSPさまがいらっしゃらなかったら、わたしにはアドインなんて遥か彼方の高嶺の花でした。 手取り足取りお教えを賜り感謝感激です。 No13でのご指摘を踏まえて再度コードを見直したいと思います。 ありがとうございました。

その他の回答 (12)

  • X-trail_00
  • ベストアンサー率30% (438/1430)
回答No.2

1・インポート機能を作成する。 2・PERSONAL.XLSを作成して所定の場所に置いてもらう モジュールで配布しないほうがいいです それをインポートしても機能を使えるのはインポートした ファイルだけになります。 よって1と2の合作 personal.xlsを所定の場所に置くマクロを持った xlsを作成してシートにボタンでも作っておく ボタンクリックすると個人用マクロの場所に そのpersonal.xlsをコピーする。 コピーじゃなくても新規で作成するようにも出来ます。 ただxlsをそのまま送付するとウイルスと間違われて セキュリティソフトにはじかれる場合もあるので 圧縮して送ってください。

merlionXX
質問者

お礼

さっそくありがとうございます。 > よって1と2の合作 その方法をご教示いただけませんでしょうか?

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>いい説明方法があれば教えてください。 1.スクリーンキャプチャなどを多用したインポート用の説明書と共に配布 2.インポート用のVBAを作成したブックを配布し、実行して貰う。 3.アドインとして配布し、手作業でインストールと登録。 4.     〃     インストール用のマクロで自動登録。 など、いくつか方法があります。 http://www.asahi-net.or.jp/~ef2o-inue/menu/menu06.html http://itpro.nikkeibp.co.jp/article/COLUMN/20060206/228642/

merlionXX
質問者

お礼

さっそくありがとうございます。 インポート用のVBAを作成したブックを配布し、実行して貰うのが一番相手にはわかりやすいですよね。 ただ、残念ながらわたしにはそれを作成するスキルがありません。 参考URLも見ましたが、インポート用VBAは見当たらないようです。 作成のため参考になるサイトはないでしょうか?