- ベストアンサー
マクロ管理の基本とは?
- マクロを効果的に管理する方法を学びましょう。
- マクロを分けて保存し、管理するための基本的な考え方を紹介します。
- マクロ管理のための参考書やウェブサイトも紹介します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
【要旨】 Function/Subの内容に応じてPersonal.xlsbとは別のファイルに分割して 保存した上で、 a)Personal.xlsbと同様に、ワークシート関数としてや『マクロ』ダイアログから の呼出を行うだけなら「XLStart」フォルダに保存 (→Function/Subを定義したのとは別のブックのVBAでは使用不可) b)別のブックのVBAからも呼び出す必要がある場合は、『参照設定』を 使用 (→フォルダはどこでも可) といった使い分けをします。 なお、これらのファイルのワークシートが表示されていると、誤った編集の 元となり得るため、これらのファイルはウィンドウを「非表示」に設定します。 【詳細】 私も自己流なのですが・・・(汗) Personal.xlsbへの記録で事足りているということですので、自分専用で 使われているマクロと推測します。 Excel2003以前のPersonal.xls、同2007以降のPersonal.xlsbは、 マクロの自動記録を行うなどして一旦作成すると、次回以降はExcel を起動するたびに自動で参照可能になるため、特別なファイルと考えて しまいがちかもしれませんが、実際に『特殊』なのはこのファイルではなく、 このファイルが保存されている『XLStart』フォルダになります。 (Personal.xlsbに限らず、このフォルダに保存されたExcelのファイルは、 Excelの起動と同時に自動で起動されます: マクロウィルスにはこの機能を悪用したものもあるので、注意が必要) <Personal.xlsbが既存の場合のXLStartフォルダの確認方法> 1)Alt+F11キーの同時押しなどでVisual Basic Editorを開く 2)【Personals.xlsbの適当なモジュール】を選択する 3)Ctrl+Gキーの同時押しなどでイミディエイト ウィンドウを開く 4)イミディエイト ウィンドウに以下の式を入力したら、Enterキーを押す ?Application.VBE.ActiveVBProject.FileName 5)すぐ下の行にPersonal.xlsbファイルのフルパスが表示されるので、 フォルダを確認すればOk ※別のファイルのパスが表示された場合は、「2」の手順を再度確認 また、VBAには『参照設定』という方法もあって、これを使用すると、 別のブックで定義したSub/Functionを使用することも可能です。 <参照設定の手順> 1)VBAのメニューで「ツール(T)→参照設定(R)」を選択 2)『参照設定』ダイアログが開くので、右側にある『参照(R)』ボタンを クリック 3)『ファイルの参照』ダイアログが開くので、一番下にある『ファイルの 種類(T)』欄で「Microsoft Office Excel Files (~)」を選択 4)必要なファイルを指定した後、『開く(O)』ボタンをクリック 上記のようにファイルを分割すれば、例えばリボンの『開発』タブの 『マクロ』ボタンで『マクロ』ダイアログを表示させた場合は、Subの前に ブック名が表示されるので、(ブック名が適切であれば)それぞれのSub の内容を推測可能になるかと思います。 また、VBA上では、『参照設定』をしない限り他のブックのFunctionや Subを呼び出そうとするとコンパイルエラーとなるので、間違って使って しまうことも回避できます。 なお、上記でも書きましたが、通常の新規ファイルにマクロを記述した だけだと、上記のどちらの方法を使用しても、Sub/Functionを定義 したブック(のシート)が表示されてしまいます。 そのままですと、新規ファイルと間違ってセルに入力をしてしまったりする 元となりますので、リボンの『表示』タブの『ウィンドウ』グループ内にある 『ウィンドウを表示しない』ボタンを使用して、ファイルを非表示に設定 することをお勧めします。 (Personal.xlsbも、この設定が行われているため、通常、起動はして いてもシートが目に触れることがなくなっています) http://pc.nikkeibp.co.jp/article/technique/20090521/1015308/?rt=nocnt ・・・長文、失礼致しました。
その他の回答 (1)
- hallo-2007
- ベストアンサー率41% (888/2115)
>今まで何も考えずにPERSONAL.XLSB内にいくつもマクロを組んでいたのですが 作成したエクセルを自分以外の人が操作する、ほかの人にも配布して使ってもらう 他の人が引き継いで、新しくマクロを組みなおす事がある などを念頭において作ることでしょうね。 基本は、それぞれのブックのモジュールに記述しておいて、ボタンなどのイベントにするのが 他の人から見てもわかりやすいです。 それと、マクロ記述時に コメントを挿入しておくことも、自分にも他人にも親切です。 PERSONAL.XLSBは、自分専用のマクロをとりあえず保存しておく よく使うコード集を保存しておいてコピペ用にとか云った具合にしか使っていません。
お礼
ショートカットキーへの登録が主で、ボタンへの登録は習いはしたのですが面倒であまり使っていませんでした。 確かに他人に渡す時にはそちらの方がよいですね。 コメントについては自分でもわかっているのですが、どうしてもソースをいじる方にばかり頭がいってしまってよく忘れます。 一番のご回答ありがとうございました。
お礼
おっしゃる通り Personal.xlsb が毎回勝手に起動してくれて便利なのでそこばかり使っていました。 同じ業務につかうマクロは同じブックに…等とするのがよさそうですね。 良く呼び出すようなプロシージャは参照設定で登録しておけばよい感じでしょうか。 いろいろと詳しく解説していただいてありがとうございます。 お返事遅れて申し訳ありません。