- ベストアンサー
【Excel VBA】コードの整理
Excel2003を使用しています。 仕事で使用しているコードが増えてきたので、コードばかりを集めたファイルのようなものを作って、整理したいと思うのですが、何か良い方法やおすすめの方法はあるでしょうか? マクロ勉強中で、以前書いたコードを参考にすることも多いので、検索もしやすいようにできればと思っています。 アドバイスよろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
まだ、明いているようですから、少し、加えておきます。 今、前にダウンロードしたものをチェックしてみました。 AutoCode Librarian というものです。今のところ、インストールはしていません。VBA 側のアドインになっています。Excel, Access , Word 等に、使えるようになっていると書かれています。(URLはつけておきます。)私は、VSSは、持ってはいるのですが、今のPCにはインストールはしていないのです。 みなさん、絶対に、いろんな方法はしているはずなんですが。 私は、Web 検索でヒットするものって、あまり採用することはないのです。他人のものを使わないということだけでなく、コードの書法が古いものがあります。明らかに、私の書かないスタイルのものもあります。また、非常に凝ったものも、著作権とは別にしても、使えたものではありません。 #2のimogasiさんは、経験的にも、私たちの大先輩だとは思うし、コードなどみても、私が、知らないアルゴリズムなど出てきますから、一般的な話とは別に、おそらく、何か他にも、管理している方法があるのではないかと思っています。 なお、私の場合は、テキストファイルで、 Excel 一般, Excel VBA, Word, Word VBA などに分けて保存しています。今どきのエディタには、アウトライン機能がありますから、それでインデックス一覧が可能です。エディタの機能にあるのですが、私は、タグジャンプを埋め込んであって、別のファイルや、場合によっては、ExcelのVer.97, Ver5 のヘルプなどを開けられるようにもしてあります。Excel VBA だけの資料でも、今、5万行ほどになっています。途中、数件は、同じものを貼り付けてダブりもありますが、削除はしていません。ですから、内容的には、ゴミみたいなものもあります。ただし、検索タイトルは、なるべくヒットしやすいようにしてあります。 例:.ポップアップタイマー (POPUP TIMER) 内容は、分類はしないです。分類という精力をそこに傾けると、それが、目的と化してしまうわけで、情報の管理の仕方は、個人では、時系列に勝るものはありません。と、『「超」整理法』 野口悠紀夫さんが、言っていたように思います。 なお、良く使うコードは、VBAのテンプレートにすると良いです。 http://www.mztools.com/index.aspx VBAオートコード・ライブラリアン
その他の回答 (4)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 自分が、#3で紹介した、「VBAオートコード・ライブラリアン」を使ってみましたが、VSSとは比べ物にならないほど貧弱でした。 なお、私の場合は、急に新しいものが必要になることもありませんので、折に触れて、電子辞書とUSBメモリの両方に入れて更新しています。USBメモリの使えない環境の場合は、電子辞書にテキストファイルを入れてあります。単に、アイデアのヒントになる部分があればよいので、コード全体は見なくてもよいのです。
お礼
Wendy02 さん、おはようございます。 お礼が遅くなり、申し訳ありません<(_ _)> >「VBAオートコード・ライブラリアン」を使ってみましたが、VSSとは比べ物にならないほど貧弱でした。 そうですか…。 URL を見てみたものの、実際まだダウンロードはしていなかったので、“貧弱”ということであれば、やめときます(^_^;) コードをテキストファイル化させたものの、まだPC本体に保存しているだけの状態だったので、その後はどうしようかなと思っていたところでした。USBメモリだと、持ち運びにも便利ですし、使えない環境は、私の場合はないと思うので、こちらも参考にさせていただきます(^^) 何度も丁寧にアドバイスいただき、ありがとうございました。
- KenKen_SP
- ベストアンサー率62% (785/1258)
投稿しようと思って回答を書いてたのですが、忙しくて激しく亀レスですが。。 VBE のファイルのエクスポートを利用するとか。 プロジェクトエクスプローラー(画面左のツリーのこと)で標準モジュール を選択し、右クリックで「ファイルのエクスポート」です。 それで、(*.bas) という拡張子こそ異なりますが、実態として単なるテキ ストファイルが出力されます。クラスなら(*.cls)ですね。フォームなら (*.frm と *.frx)の2種類が出力されます。 # ただし、*.frx だけはテキストファイルではありません これらのファイルをひとつのフォルダにまとめて置けば良いかと。ファイル 名はある程度の規則性は持たせますが、基本的に適当です。 # あまり凝ると面倒になるので あとは、下記のような全文検索ソフトを使えば良いでしょう。 [Keyword Inspector] http://ohju.cside4.jp/software/kwisp/ Keyword Inspector のオプションで、「テキストファイルとして検索する 拡張子」が設定できますので、これに .bas/.cls/.frm を追加します。 もちろん、VBA コードはエクスポート前に目的・用途や注意点、引数の説明、 参照設定の有無などのコメントを書いておけば検索しやくすなります。 あるいは、Web で見かけた気になるコードはそのままテキストファイル (*.txt)にコピペしておく。完結したプロシージャ単位でなく、Tips 単位 であっても良いので、とにかくコードをテキストファイルに羅列し、ソース URL などの情報とともに置いておく。 あとは、、、 指定したフォルダ内で、指定したキーワードにマッチしたファイルは、 Keyword Inspector のリストボックスに一覧表示されます。 それをダブルクリックすることで、愛用のテキストエディタで開かれ、 該当行まで自動でカーソルがジャンプしますよ。 # 以前 Access で自分のコードライブラリを作ってましたが、カテゴリ # 分けとか、コードをコピーして貼り付けて。。とあまりに面倒すぎて # 続きませんでした。 # それで、「できるだけ手間暇をかけない」この方法に至っています。 余談ですが、.bas 形式等で保存しておくメリットのもう一つはプロジェ クトエクスプローラーにドロップすれば簡単にインポートできることです。 さらに付け加えると、教えてGoo へ投稿した回答も自分のコードライブラリ として使っちゃってます。。自分のものだけがヒットするように、意図的に あるキーワードを回答に含めるとか、、といった工夫?をしてましたね。 # 今はやってません さらに言えば、.bas の入ったフォルダは定期的に Yahooのブリーフケース にアップしたりもします。出先でも参照できるし(・∀・) ご参考までに。
お礼
KenKen_SP さん、こんにちは。 回答ありがとうございます。 >VBE のファイルのエクスポートを利用するとか。 ファイルをエクスポートしてフォルダにまとめて、教えていただいた全文検索ソフトを使用してみたところ、おぉぉぉ~!でした(笑) コードの検索以外にも便利に使えそうです♪ >以前 Access で自分のコードライブラリを作ってましたが、カテゴリ分けとか、コードをコピーして貼り付けて。。とあまりに面倒すぎて続きませんでした。それで、「できるだけ手間暇をかけない」この方法に至っています。 やはり、手間暇かけると長続きしないのですね。 あまり凝ったものにすると、長続きしない可能性は大なので、できるだけシンプルな方法で…と思っています。 >さらに言えば、.bas の入ったフォルダは定期的に Yahooのブリーフケースにアップしたりもします。出先でも参照できるし(・∀・) こんなこともできるのですね! 出先でも参照できるのは良いですね。参考にさせていただきます。 お忙しいところ、丁寧にアドバイスしていただき、ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17070)
自分実行できていると言うことではないのですが、常々思っていることを述べます。 まず日本語(エクセルの術語)の上で、どう整理したら、引き出しやすいか の構成を考えるのが第1では無いかと思います。 VBAコード=>日本語、はあまり使わないので、 日本語で発想して特徴を捉え=>エクセルの術語に整理=>本件を索引=>コードに行き着く、がメインと思う。 ーー 参考になるのが、手持ちのVBAの本の索引です。 しかし、十分満足できる分類の索引はであったことが無いと思っています。 ーー 「VBA逆引き○○連発」のような本もありますが、これもコードを 作るとき、使い勝手が使う上で十分ではないように思います。 ーー (1)○○のXXの△△ この○○、XX、△△に(エクセルの術語の)何を持ってくるか 例 セルの色をつける セルに罫線をひく 取得、設定、解除・抹消・非表示は常にメニューのペアに入れて、近くに解説を置いておく。 大体VBAでは1行で済んでしまうのが多い。 たまたまWEB照会で最初に出た http://excelvba.pc-users.net/fol2/2_6.html などのような整理方法。 既にWEBに紹介されているケースが多い。もれているものを 折に触れて、追加する方法が完成には早いと思う。 ただし、これも実際は2通り、3通りから考えられる場合も多いので、こまめに完全実行は難しい。 例えば書式の##、##0について セルの書式設定 セルの書式設定のユーザー定義 数に3桁ごとにカンマを入れる 数の桁とり のそれぞれに、入れたいが、面倒です。 (2)もう少し文章的になるもの 例 表から該当行を抜き出す フォルダからエクセルファイルを開く この区分けが難しい(VBA逆引き○○連発はこのレベルが多い) 大きく分類しすぎるとプロシージュアー単位になってしまい、使いにくいし、細かくすると(1)になってしまう。 ーー 上記のことは参考になりませんか。 私もやりかけたことがあるが、(1)は覚えると見ることはなくなるし、長期に渉る増やす作業が、怠けて続かない。
お礼
アドバイスありがとうございます。 私自身がイメージしていたものは、imogasi さんの言われる(2)の方法でしたが、どういうふうに区分けするかが悩むところです(^_^;) 確かに(1)は覚えると見ることはなくなりますし、参考書やWEBで簡単に検索できるので、やはり(2)の方法でしょうか…。 >長期に渉る増やす作業が、怠けて続かない。 可能性は大ですが、続ける努力をしたいと思います。 細かくアドバイスいただきまして、ありがとうございました。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 ここで、VBAを中心で書いている方は、いろんな方法をしていると思いますね。 自動管理するなら、VSS があると便利なんですね。(Developer などには含まれています) http://www.microsoft.com/japan/msdn/vstudio/previous/ssafe/qa_ssafe.aspx ところが、VBAで、数多く作ってしまう人には、それを今度は常駐すると、いちいち聞いてくるので、うっとうしく感じられるわけです。それに、ゴミコードも保存してしまいますからね。(^^; 数ヶ月前、フリーソフトウェアをみつけて、ダウンロードしたのですが、使わないので、そのままになって埋もれてしまいました。 それで、いままで私自身は、ずっと、テキスト・エディタでテキスト・ファイル化させています。コードの場合は、どちらかというと、メソッドなどが中心になってきますので、テキストファイルで、例えば、Application.Volitile だけで、検索すれば、ヒットしてきますので、それで、以前は、どんなものを作ったのか分かります。 また、前のものでも、多く使うようなものは、その都度、修正しています。
お礼
Wendy02 さん、こんにちは。 アドバイスありがとうございます。 >自動管理するなら、VSS があると便利なんですね。 VSS というものを知らなかったので、教えていただいたURLを拝見しましたが、参考になりました。とりあえず、使ってみようと思います。 テキストファイル化は、自分の中でなんとなく考えていたことでもあったので、こちらもやってみて、自分に合った方法を見つけたいと思います。 確か似たようなコードを書いたという記憶があっても、どのファイルのマクロだったか細かいところまで覚えていなかったりして、その参考にしたいコードを探すのに少々手間を取られたりすることもあったので、ここらへんで、一度整理しておいたほうがいいかなと思い、質問した次第です。 PS. Wendy02 さんからアドバイスをいただけないかなぁと期待していたので、運良く(?)目に留めていただけて良かったです♪ ありがとうございました!
お礼
Wendy02 さん、こんにちは。 再びアドバイスをいただきまして、ありがとうございます。 朝からコードをテキストファイル化させていました。 仕事上、ある程度は分類しておいたほうが良さそうなので、大まかに分類したところです。 …が、分類しているうちに、ついついこれも分けたほうがいいかななどと、Wendy02 さんが言われているように“分類が目的と化して”しまいそうになりました(^_^;) コードが増えてきたと言っても、マクロ名を見れば、どのファイルで使用しているものと見当がつくほどですので、今後のためにも、今のうちに整理しておきたいと思います。 教えていただいたURLも参考にさせていただきます。 ありがとうございました。