VBSを使ってちょっとパソコンを便利にしよう。

ソースコード
Tips

皆様VBSをご存知ですか?Windowsを使う上でちょっと便利なる小技です。

VBSはVisualBasicScriptの略でメモ帳やテキストエディタでコードを書けば、そのままWindowsで動かせるという便利なツールなのです。WindowsではVBSの実行エンジンが初期状態で備わっているために、何も設定をしなくともVBSはプログラムとして動きます。

プログラム初心者の方が入門として使うのもありだと思います。

メモ帳でコードを書けば動く。この利便性は他のなにものにも代えがたいWindowsならではの仕組みです。linuxですと大抵の場合perlスクリプトがデフォルトで動きますし、シェルスクリプトも使えますが、WindowsですとVBSですとかWSH関連がそれを代用してくれます。

プログラミング言語は一つ覚えると他の言語もなんとなくこんな感じかなと習熟できるので、覚えてみると楽しいですよ。

ただし最近ではVBSは古いといわれていてマイクロソフトはパワーシェルに移行したがっているようです。マイクロソフトはパワーシェルをVBSやWSHの代替手段として据えていてVBSでできることはパワーシェルでもできるようです。ですがWindowsの初期設定ではパワーシェルは実行にひと手間必要なので、VBSの手軽さは一段上ですかね。とはいっても最初に設定してしまえばちゃんとパワーシェルも動くようなので、素直にマイクロソフトの戦略に乗ってみるのも手かもしれません。

VBSの基本。

先にも述べましたがVBSはテキストエディタでコードを直書きして使えます。メモ帳にコードを書いて拡張子をvbsにして保存してみましょう。

拡張子を変更する。拡張子とは

この保存したファイルをダブルクリックすればコードを実行できます。プログラミング体験としては非常に簡単なので優秀です。自分の書いたコードが動く喜びを味わってみてください。

例えば以下のコードをコピペで良いですから、メモ帳にシンプルに一行書いてみてください。保存が完了したらダブルクリックして実行します。

msgbox “こんにちは。プログラミング”

いかがですが。プログラム入門として一番最初にやることの多いテキストを出力するだけのハローワールドプログラムが実行できます。

プログラムは基本1行に1命令を書いていって上から下に順に実行されます。途中順序を変えるための制御構造がありそれらで繰り返し実行や、実行するしないを制御します。

またVBSではOLEやActiveX(COM)を使ったプログラム連携もできるのでこれを使わない手はないです。ActiveXとはWindowsですでに完成しているプログラムを呼び出せる仕組みでExcelやWord、その他の便利なプログラムをVBSから呼び出して使えるという仕組みになっています。

ActiveXを使ってみよう。

ActiveXを使えば既存のアプリケーションをオートパイロットのように操縦することができます。例えばIEを起動してURLを読み込んだり、その読み込んだページのソースを使って何かを解析したり、今はやりのAIにデータとして食わせたりそういう事ができます。以下にIEを使ったサンプルソースを置いておきます。起動するなりしていろいろためしてみましょう。

なおシングルクォートで始まる文はVBSではコメントとして扱われます。プログラミング言語では、プログラムの解説など自分の好きな文章をコメントとして付与する事ができます。なお実行時には無視されて実行されます。

    'Internet Explorerのオートパイロットの例

    '変数の宣言
    Dim IEobj

    'オブジェクトの作成
    Set IEobj = CreateObject("InternetExplorer.Application")

    'バックグラウンドで実行しているIEを表示させます。
    IEobj.Visible = True 

    'ヤフーを読み込みます。
    IEobj.Navigate2 "http://yahoo.co.jp/"

   'ページの読み込み状態と同期 読み込まれるまで待ちます。
    Do While IEobj.Busy = True Or IEobj.readyState <> 4
        WScript.Sleep 100        
    Loop
    
    '検索ボックスに検索ワードを入れる p が Dom Elementの名前
    With IEobj.document      
    .getElementsByName("p")(0).Value = "テストワード"          
    End With
	
	'フォームのデータをSubmitするための前準備(フォームエレメントを取得)
    Set oForm = IEobj.document.getElementsByName("sf1")(0)

	'FormをSubmitする。HTMLソースよりSubmit形式はHTTP GETメソッドのようです。
    oForm.submit()

解凍してメモ帳で開き、その後実行してみましょう。IE_Auto.zip(DL)

このコードはヤフーの仕様変更により最後のほうが動かなくなる可能性があります。そのたびにメンテナンスできないので、動かなくなった場合はIEを操縦できるんだという感覚だけ感じてください。(最初のほうのコードはIEがサポートされる限り動くはずなので・・)似たような操作をエクセルで行うことも可能です。マクロのような自動操縦を体感できます。

VBSのこれからとまとめ

いかがでしょうか。VBSといっても侮れないと思います。様々なアプリと連携できるため用途は様々に使えます。ただし古い技術なのでこれから覚えるなら.NET Framework+PowerShellを使ったほうが今どきといえるようです。ただアプリの自動操縦となるとCOMやActiveXを使った作業となる場合が殆どと思われます。Frameworkはあくまでもプログラムの部品としてつかえるのでしょうから、COMの代わりにはならなさそうです。結局PowerShellでやるにしてもCOMを使うことになるとなるとVBSでやっても一緒かもしれません。

VBSはこれからも使われていくのではないかと私は思います。Microsoftの方針でWindowsの初期設定が変わればどうなるかはもちろんわかりません。現時点では何も操作する必要のない利便性がかなりのものなのでまだまだ現役かなと思います。

コンテンツフィルター
Tips
DNSを使って簡単にコンテンツフィルタリングを行うOpenDNS

皆様コンテンツフィルタリングに興味はありますか? お子様がいらっしゃる場合など危険なサイトにはアクセスしてほしくないと考える方も多いのではないでしょうか? 大人用コンテンツやフィッシングサイトなど危険なサイトは沢山あります。どのようにしてそのようなサイトから身を守るべきでしょうか。 今から出来るフィルタリング 今からすぐフィルタリングを始めたい場合、利用でき …

オークションハンマー
Tips
Yahooオークションなどでの落札相場を知るためのサイト

皆様PCライフを楽しんでいますか? PCで出来ること・・。色々ありますが、中でもオークションは一度は使ったことがあるのではないでしょうか?使ったことの無い方はオークションでの注意点を噛みしめながら初オークションデビューをしてみると楽しいかもしれません。 オークションはいろんな人が出してるので中には悪い人に当たる可能性もあります。ハズレを掴まされたりするとなか …

Tips
バッチファイルで定型処理を省略しよう

皆様こんにちは。皆様はバッチファイルをご存知ですか? 当サイトでも記事の中で使ったことはあるようですが、取り上げるのは始めてのようです。バッチファイルとは何でしょうか? バッチファイルとは バッチファイルは処理をひとまとめにして、一連の処理を一回で行うためのファイルです。 バッチ処理というのがあってこれがひとまとまりの処理をまとめて行う処理のことをいいます。 …