昨日のVBS説明

えー、お待たせしました(笑)
一部中身を見てしまったイケナイ子もいたみたいですが、
解説します(笑)


VBSファイルの中身はこうなってました。

                                                                                                                                                                                                                              • -


Dim Answer

Do While Answer <> vbYes

Answer = MsgBox("あなたは福田総理が好きですか?", vbYesNo, "しつもん")

If Answer = vbYes Then
MsgBox "ふ〜ん、好きなんだぁヾ(・ε・。)", , "しつもん"
Else
MsgBox "え〜、ウソだぁ〜。。", , "しつもん"
End If

Loop

                                                                                                                                                                                                                              • -


まぁ、今回も難しい事はしてませんが、
Mac版と同じだとつまらなかったので、
ループ文を使用しました。


まず、Answerを変数定義します。
そして、ループ文に入りダイアログボックスを表示させます。


VBS


MsgBox関数ですが、「MsgBox 表示させる文字列, ボタンの種類, タイトル」
となってます。


Apple Scriptと違うのは、ボタンの種類が始めから決まっていることですかね。
今回はユーザーに「はい、いいえ」を選択させたかったので「vbYesNo」を使ってますが、
「vbOKCancel」、「vbYesNoCancel」等色々あります。
そして、戻り値としてvbYesなのかvbNoなのか、ユーザーの選んだボタンの値を変数Answerに返します。


次に、if文に掛けます。
もしユーザーの答えがYesの場合、文字列「ふ〜ん、好きなんだぁヾ(・ε・。)」を表示させます。


VBS


それ以外(答えがNo)の場合、文字列「え〜、ウソだぁ〜。。」を表示させます。


VBS


さて、ここでYesのボタンを押した場合とNoを押した場合と比較して、
プログラムの動きが大きく変わってきます。
結論から言えば、ご存知の通りNoを押す限り永久ループにはまります(笑)


ということで、「Do While 〜 Loop」の説明です。
Do While 〜 Loopは、「条件を満たしている間」ループし続けます。
今回の場合は条件が、「Answer <> vbYes」となっており、
演算子が<>となっていることから、
「変数AnswerがvbYesと等しくない」となってます。
変数AnswerがvbYesと等しくない限りループをし続けます。
言い換えると、vbNoを選び続ける限り、ループします(笑)
vbYesを選んだ場合、等しくなってしまうので、
今回の条件は満たせないことになります。よってループから抜けます。


また、仲間のループ文に「Do Until 〜 Loop」があります。
こちらは反対に、「条件を満たせるまで」繰り返します。
いつもDo Whileを使う事が多いので今回もDo Whileで書いてしまいましたが、
今回のループ文は、


Do Until Answer = vbYes

色々と実行文

Loop


とも書ける訳です。
この場合、条件が「Answer = vbYes」となっており、
「変数AnswerがvbYesと等しい」となってます。
読んで字の如くUntil(〜まで)ですので、満たせるまで(等しくなるまで)ループし続けます。
よって変数AnswerがvbYesにならない限りループするので、
Noのボタンを押す限りは永久ループです(笑)
福田総理を好きと言わざる負えないのです(笑)
完璧な嫌がらせです(笑)


これらのDo While & Untilですが、
よくこんな形で使ったりします。


Do While i < 10

実行文

i = i + 1

Loop


これを応用して、力技も繰り出せます(笑)
でもそこまで来ると、
理解するのにある程度頭を使わないといけませんが…。。


今回はボタンの値を条件にしてループさせましたが、
多分、数字の方がわかり易い気もしますので、
上記の説明が分からなかった場合、
簡単なループ文を作りましたのでそちらを実行したり、
中身を見たりして理解してみて下さい。
それでも分からなくて興味があれば、メールなり電話なり下さい(笑)


※予告なく削除する可能性もあります。
http://d.hatena.ne.jp/Shinez/files/DoWhile.zip?d=download


最後に、VBSの便利さ何ですが、なにより一々コンパイルしなくて良い事です。
(※厳密に言えばコンピュータはこれらの言語を理解出来る訳がないので、
結局はコンパイルして機械語にするんですが…。。)
テキストで手軽に作って、拡張子をVBSに変えちゃえば、出来上がり!
う〜ん、便利です(笑)
同じようなやり方に、コマンドプロンプトのバッチファイルがありますが、
バッチファイルはどうもコマンドに弱いと思うので、
VB系のコマンドが使えるのは大きいです。
因みに、VBSはVBの簡易版みたいな感じだと思います。
VBAコンパイルは必要ないかもしれませんが、結局エクセル立ち上げるのが面倒です。
さほどでもない作業は、
Win + R → 即マクロ実行!やっぱこうしたいです(笑)


VBSとApple Script、どちらも手軽に作れて高機能で便利ですが、
それは何を意味するかというと、手軽にウイルスも作れる訳です。
ですので、これらのファイルには注意しましょう(笑)
世間はシェア的にWindowsなので、VBSの方が蔓延してると思いますが、
Appleがこのままシェアを伸ばせば、
あのスクリプトエディタは確実にウイルス生産ツールになると思います(笑)
注意が必要ですね。



Windows自動処理のためのWSHプログラミングガイド

Windows自動処理のためのWSHプログラミングガイド