| ||
| ||
| ||
前ページへ [ステップアップ WSHへ戻る] 次ページへ |
Level.8 検索対象フォルダと検索文字列を入力できるようにする | ||||||||||||||
結構使えるレベルになってきましたが、Level.7の状態だと、検索対象フォルダの指定や検索文字列の指定がスクリプトの中にあり、変更するにはいちいちスクリプトを書き換えなければならない状態で使い難いですね。 そこで、Level.8ではスクリプトの起動後、メッセージボックスを表示し、そこに検索対象フォルダや検索文字列を指定できるようにします。
■ メッセージボックスを利用して情報を入力する今回の修正ポイントは、InputBox関数を使い必要な情報をメッセージボックスから得るようにします。勉強会では、検索対象フォルダと、検索文字列の入力で2行しか修正しなかったのですが、ここではさらに、入力された検索対象フォルダが存在するかチェックする機能も追加します。
それでは変更ポイントを見てみましょう。前回までと同様、見易さの為に入れた空行やコメントの説明は省きます。
■ 3〜11行目
この部分では、検索対象となるフォルダ名の入力を行っています。Level.7では、11行目のGetFolderメソッドのみでしたが、Level.8ではこの部分をメッセージボックスからの入力およびフォルダの存在チェックを追加しています。それでは、1つ1つ見ていきましょう。 2行目では、フォルダ名を格納する変数(srhFol)を初期化しています。 3行目〜10行目の繰り返し処理(Do〜Loop)は、フォルダ名入力処理となっています。このループは、3行目にある条件によって、正しいフォルダ名が入力されるまで繰り返し処理されます。『正しいフォルダ名』は、3行目の"fso.FolderExists(srhFol)"メソッドにより、入力されたフォルダ名(srhFol)が実在する場合「真(正しい)」と判断されます。 4行目〜5行目では、メッセージボックスを表示するときに、その中に表示するメッセージをtmpMsg変数に作成しています。内容は1行目に「検索フォルダを入力して下さい。」、2行目に「終了時は"c"をと入力して下さい。」と表示します。ところで、4行目の末尾にアンダースコア(_)がありますが、これは、行の『継続』を意味していて「4行目と5行目を合わせて1行として扱って下さい」という指示です。行の継続は1文が長い時に見易さの為に使用します。 6行目では、InputBox関数を使ってメッセージボックスを表示しています。メッセージボックスの中には、先程作成したメッセージ(tmpMsg)と、入力用のテキストボックスが表示されます。また、テスト時に何度も「C:\script\tips」と入力するのが面倒なので、初期値として指定して見ました。不要な場合は、InputBox関数の第3パラメタから削除して下さい。
7行目〜9行目は、フォルダ名入力の繰り返し処理で「やっぱ、やぁ〜めたっ」と思った時に、処理を終了できるようにしています。終了条件はフォルダ名に"c"か"C"と入力された場合に終了します。LCase関数は括弧内のアルファベットを全て小文字化する関数です。よって、If文では"c"のみを判定しています。また、スクリプトの終了はWScript.Quitによって行っています。 最後に11行目ですが、これは以前までのレベルと同様、GetFolderメソッドを使ってフォルダのオブジェクトを作成しているのですが、以前は"C:\script\tips"と定数(固定値)を使っていたのに対し、今回は10行目までにフォルダ名がセットされたsrhFol変数を指定しています。
■ 13行目
13行目は先程のフォルダ名の入力同様、InputBox関数を使い検索文字列を入力しています。また、テスト時に何度も検索文字列を入力するのが面倒なので、初期値として"ファイル"を入力してあります。
■ 実行してみましょうさて、早速実行してみましょう。
と、こんな感じになります。これでいちいちスクリプトを修正しなくても検索対象フォルダや、検索文字の指定ができるようになりました。 さて、今回はここまでです...が、ふとこのスクリプトを見ていて私自身不満があることに気が付きました。勉強会では、この後のレベルで入力インタフェースの改善をしていく方向でしたのでこのまま進めるのが良かったのですが、実際にこのスクリプトを使って検索することを考えると、バッチ処理的に使う時には、いちいちダイヤログボックスが出てきしまったのでは使い物になりませんね(汗。 そこで、この後の2回、つまりLevel.10で一端スクリプトが完成した状態になりますので、おまけ的にLevel.10aとでもしてコマンドラインのオプション指定でフォルダと検索文字を指定できるバージョンを作りたいと思います。 ちなみに、次のLevel.9では今まで見て見ない振りをしてきた(笑)、サブフォルダの内容までを検索対象にしたいと思います。勉強会では、分かり易くなるように多少遠回りして見たのですが、かえって分かり難いものになってしまった気がしますので、ちょっと内容を変えて見ようと思っています。 |
前ページへ [ステップアップ WSHへ戻る] 次ページへ | |
※全ては自己責任でお願いします。 ※当サイトに関するご連絡は tomomo_c@hotmail.com までお願いします。 |
最終更新日 2004.5.11 |