• ベストアンサー

【Excel VBA】コードの整理

Excel2003を使用しています。 仕事で使用しているコードが増えてきたので、コードばかりを集めたファイルのようなものを作って、整理したいと思うのですが、何か良い方法やおすすめの方法はあるでしょうか? マクロ勉強中で、以前書いたコードを参考にすることも多いので、検索もしやすいようにできればと思っています。 アドバイスよろしくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

まだ、明いているようですから、少し、加えておきます。 今、前にダウンロードしたものをチェックしてみました。 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オートコード・ライブラリアン

参考URL:
http://www.softpedia.com/get/Programming/Coding-languages-Compilers/VBA-AutoCode-Librarian.shtml
rx-z5815
質問者

お礼

Wendy02 さん、こんにちは。 再びアドバイスをいただきまして、ありがとうございます。 朝からコードをテキストファイル化させていました。 仕事上、ある程度は分類しておいたほうが良さそうなので、大まかに分類したところです。 …が、分類しているうちに、ついついこれも分けたほうがいいかななどと、Wendy02 さんが言われているように“分類が目的と化して”しまいそうになりました(^_^;) コードが増えてきたと言っても、マクロ名を見れば、どのファイルで使用しているものと見当がつくほどですので、今後のためにも、今のうちに整理しておきたいと思います。 教えていただいたURLも参考にさせていただきます。 ありがとうございました。

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。 自分が、#3で紹介した、「VBAオートコード・ライブラリアン」を使ってみましたが、VSSとは比べ物にならないほど貧弱でした。 なお、私の場合は、急に新しいものが必要になることもありませんので、折に触れて、電子辞書とUSBメモリの両方に入れて更新しています。USBメモリの使えない環境の場合は、電子辞書にテキストファイルを入れてあります。単に、アイデアのヒントになる部分があればよいので、コード全体は見なくてもよいのです。

rx-z5815
質問者

お礼

Wendy02 さん、おはようございます。 お礼が遅くなり、申し訳ありません<(_ _)> >「VBAオートコード・ライブラリアン」を使ってみましたが、VSSとは比べ物にならないほど貧弱でした。 そうですか…。 URL を見てみたものの、実際まだダウンロードはしていなかったので、“貧弱”ということであれば、やめときます(^_^;) コードをテキストファイル化させたものの、まだPC本体に保存しているだけの状態だったので、その後はどうしようかなと思っていたところでした。USBメモリだと、持ち運びにも便利ですし、使えない環境は、私の場合はないと思うので、こちらも参考にさせていただきます(^^) 何度も丁寧にアドバイスいただき、ありがとうございました。

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

投稿しようと思って回答を書いてたのですが、忙しくて激しく亀レスですが。。 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のブリーフケース にアップしたりもします。出先でも参照できるし(・∀・) ご参考までに。

rx-z5815
質問者

お礼

KenKen_SP さん、こんにちは。 回答ありがとうございます。 >VBE のファイルのエクスポートを利用するとか。 ファイルをエクスポートしてフォルダにまとめて、教えていただいた全文検索ソフトを使用してみたところ、おぉぉぉ~!でした(笑) コードの検索以外にも便利に使えそうです♪ >以前 Access で自分のコードライブラリを作ってましたが、カテゴリ分けとか、コードをコピーして貼り付けて。。とあまりに面倒すぎて続きませんでした。それで、「できるだけ手間暇をかけない」この方法に至っています。 やはり、手間暇かけると長続きしないのですね。 あまり凝ったものにすると、長続きしない可能性は大なので、できるだけシンプルな方法で…と思っています。 >さらに言えば、.bas の入ったフォルダは定期的に Yahooのブリーフケースにアップしたりもします。出先でも参照できるし(・∀・) こんなこともできるのですね! 出先でも参照できるのは良いですね。参考にさせていただきます。 お忙しいところ、丁寧にアドバイスしていただき、ありがとうございました。

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

自分実行できていると言うことではないのですが、常々思っていることを述べます。 まず日本語(エクセルの術語)の上で、どう整理したら、引き出しやすいか の構成を考えるのが第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)は覚えると見ることはなくなるし、長期に渉る増やす作業が、怠けて続かない。

rx-z5815
質問者

お礼

アドバイスありがとうございます。 私自身がイメージしていたものは、imogasi さんの言われる(2)の方法でしたが、どういうふうに区分けするかが悩むところです(^_^;) 確かに(1)は覚えると見ることはなくなりますし、参考書やWEBで簡単に検索できるので、やはり(2)の方法でしょうか…。 >長期に渉る増やす作業が、怠けて続かない。 可能性は大ですが、続ける努力をしたいと思います。 細かくアドバイスいただきまして、ありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 ここで、VBAを中心で書いている方は、いろんな方法をしていると思いますね。 自動管理するなら、VSS があると便利なんですね。(Developer などには含まれています) http://www.microsoft.com/japan/msdn/vstudio/previous/ssafe/qa_ssafe.aspx ところが、VBAで、数多く作ってしまう人には、それを今度は常駐すると、いちいち聞いてくるので、うっとうしく感じられるわけです。それに、ゴミコードも保存してしまいますからね。(^^; 数ヶ月前、フリーソフトウェアをみつけて、ダウンロードしたのですが、使わないので、そのままになって埋もれてしまいました。 それで、いままで私自身は、ずっと、テキスト・エディタでテキスト・ファイル化させています。コードの場合は、どちらかというと、メソッドなどが中心になってきますので、テキストファイルで、例えば、Application.Volitile だけで、検索すれば、ヒットしてきますので、それで、以前は、どんなものを作ったのか分かります。 また、前のものでも、多く使うようなものは、その都度、修正しています。

rx-z5815
質問者

お礼

Wendy02 さん、こんにちは。 アドバイスありがとうございます。 >自動管理するなら、VSS があると便利なんですね。 VSS というものを知らなかったので、教えていただいたURLを拝見しましたが、参考になりました。とりあえず、使ってみようと思います。 テキストファイル化は、自分の中でなんとなく考えていたことでもあったので、こちらもやってみて、自分に合った方法を見つけたいと思います。 確か似たようなコードを書いたという記憶があっても、どのファイルのマクロだったか細かいところまで覚えていなかったりして、その参考にしたいコードを探すのに少々手間を取られたりすることもあったので、ここらへんで、一度整理しておいたほうがいいかなと思い、質問した次第です。 PS. Wendy02 さんからアドバイスをいただけないかなぁと期待していたので、運良く(?)目に留めていただけて良かったです♪ ありがとうございました!

関連するQ&A

  • 【Excel】値のみコピーのコードの書き方

    Excel2003を使用しています。 Sheet1のE41:E54までをSheet2のアクティブセルに値のみコピーするコードを書きたいのですが、ただ“コピー”するだけなら書けたのですが、“値のみコピー”の書き方がわかりません。 もしよろしければ、“値のみコピー”の部分のコードだけでなく、全体を書いていただけると、マクロ勉強中ですので、参考になります。 よろしくお願いします!

  • Excel2007のVBAについて

    Excel2007のVBAについて Excel2007以前では「マクロの記録」を実行して罫線や図形の描写を行って、「記録終了」を行うと作業していたコードが記述され、それを加工したりして使っていましたが、Excel2007で同じように行ってもコードが記述されてませんでした。 セルの操作等はコードが記述されていました。 どこか、私の操作方法が間違っているのでしょうか。また2003のようにコードを記述させる方法が別途あるのでしょうか、よろしくお願いします。 関係ないとおもいますが、 「Excelのオプション」で「開発タブをリボンに表示する」はチェック入れてあります。 「マクロの設定」では「すべてのマクロを有効にする」にチェックしています。

  • 他のExcelファイルのVBAコードを検索したい

    他のExcelファイルに書かれたVBAコードに、ある特定のキーワード(パス名など)が使われているかを自動的に調べるためのVBAを書きたいと思っています。 仕事で使っているマクロが書かれたExcelファイルからある特定の処理をしているマクロを含むものを検索したいのですが、検索するExcelファイルが膨大なため、順番にExcelファイルを開いてVBAコードをチェックしていく工程をマクロ化したいのです。ファイルを順に開いていく処理はマクロ化できるのですが、書かれたVBAコードのチェックをどうしたらよいか悩んでいます。 「VBAコードに対して検索する」または「VBAコードを1行ずつ変数に代入する」、「モジュールシートをテキストファイルに出力する」などの処理が自動化できれば対応できそうなのですが、そのような処理をExcelVBAで作成できるでしょうか。 なお環境はWindowsXPのExcel2003です。 よろしくお願いいたします。

  • 【Excel VBA】条件付き改ページ設定

    Excel2003を使用しています。 一定行(47行)ごとに改ページを設定するマクロは過去質問を参考にコードを書くことができましたが、“非表示の行を除いた”47行ごとに改ページを設定するマクロにするには、どのようにすればいいでしょうか? 過去質問も検索してみましたが、検索の仕方がよくないのか、うまく見つけられず…。 よろしくお願いします。

  • Excel VBA 標準モジュールの整理?

    Excel2003を使用しています。 ある人が作成したファイルが数十人分、WEB上に保存してあり、マクロも数個含まれています。 マクロの内容は、シート上に配置されているボタンをクリックすることで印刷する書類(印刷範囲)を変更するといった簡単なものがほとんどなのですが、マクロの記録を何度もとりながらコードを書いたらしく、標準モジュールが20個もありましたが、空のモジュールのほうが多かったです。 また、マクロに判別しやすい名前が付いていないため、このボタンのコードは、どのモジュールに書かれているのかが分からないので、ひとつひとつ確認しながら、空のモジュールは削除し、同じシート上で行う処理は、同一のモジュール内にまとめるなどして、標準モジュールを整理しました。 上記のことを自分用に作成されているファイルで行いましたが、同じ部署内の分は私が管理するので、標準モジュールの内容(モジュールの数とコード)を私のファイルと同じようにしたいのですが、コピペのような簡単な方法はあるでしょうか? 質問内容が分かりづらくて申し訳ありませんが、よろしくお願いします。

  • 【Excel VBA】ループについて

    Excel2003を使用しています。 2つのBook間でのループはできるのでしょうか? 下記のようにBook1のデータをBook2へ値のみコピーしたいのですが。。。  Book1のSheet1     Book2のSheet1   T7:T23          L19   U7:U23          L59   V7:V23          L99    :              :    :              :   AM7:AM23        L779 マクロ勉強中ですので、まず、マクロの記録をとってみたのですが、同じ処理の繰り返しなので、ループかな?と思い、参考書や似たような処理のコードを見たりしながら、あれこれ考えていたら、頭が混乱してきてしまいました(>_<) 2つのBook間では難しい(面倒)ならば、同じBookに変更することも考えています。 よろしくお願いします。

  • Excel2003でVBAを勉強しています。

    Excel2003でVBAを勉強しています。 そこで、お聞きしたい事があります。 ボタン(でいいでしょうか?)を作成するには、3つの方法があるかと認識しています。 ?コントロールツールボックスのコマンドボタン機能を使用する方法 ?フォームのボタン機能を使用する方法 ?オートシェイプにマクロ機能を登録する方法 それぞれ、の違いというか特徴が良く判りません。 特に、?と?の違いは何なのでしょうか? ?のフォームを検索してもユーザーフォームしかヒットせず、違いが分かりません。 よろしければ、ご回答お願いします。

  • 【Excel】VBAのサンプルを2007でも使えるようにしたい

    ​http://www.geocities.jp/ttak_ask/office_docu/ef6.html​ こちらのサイトにサンプルが記載されています。 2007と2003でこれを使いたいのですが、2007でマクロを動かすと、エラーが出てしまいます。 調べてみました所、「With .FileSearch」が2007では使えないということなのですが、どうコードを書き換えたらいいのでしょうか。 (手元の本には、Dir関数を使用したファイル検索を使用します」とあるのですが、そちらは純粋にファイルを検索するという目的に使っていて、一方こちらはファイルを順番に読んでいく、という目的で使っているように思います。ですのでどうしたらいいのか、ちょっとわからないでいます) 詳しい方、どうかよろしくお願いします。

  • excel2007でexcel97ファイルは使えない?

    会社のパソコンを、excel2007にバージョンアップしました。 以前は、excel97を使っていました。 97で作ったマクロファイルを、2007で開いて使いたいのですが、 エラーがでて、使えません。 このような場合どうしたらいいのでしょうか? 仕事が進まなくて、困ってます。

  • Excel2000とExcel2002のVBAの違いについて。

     以前、このカテゴリーにて、Excel2000におけるVBAのマクロを教えてもらったのですが、そのマクロ入力済みエクセルファイルをExcel2002へ移植したら、上手くVBAが働きません。  具体的にいうと、シート1に入力したデータの履歴を、シート2にて保存していくマクロなのですが、Excel2002では履歴のシートに上書きしていくことがあります。(たまに発生する)  Excel2000ではキチンと履歴のセルが全て残ります。  どなたか、この不具合を認識しておられる方。もしくは、対策をご存知の方がいらっしゃいましたら、教えてください。  

専門家に質問してみよう