Windows TIPS
| [Scripting] |
WSHからExcelファイルの設定情報を読み込む
|
 |
| ■ |
アプリケーションのデータ・ファイルとして、カンマ/タブ区切り形式やXML形式が採用されるケースは多い。しかしこの形式はいずれも視認性に乏しい、編集の手間が煩雑などの要因から、エンド・ユーザーにメンテナンスさせるのは必ずしも容易ではない。 |
| ■ |
Excelフォーマットを用いることで、データの中身を人間が視認しやすくなり、メンテナンスを行う際の不用意な誤りも減らすことができる。 |
|
|
Windows TIPS「WSHからXMLファイルの設定情報を読み込む」では、WSH(Windows Script Host)からXML(eXtensible Markup Language)形式の設定ファイルを利用する方法について紹介した。XMLは拡張性にも優れており、可読性にも富んだフォーマットである。だがエンド・ユーザーがその内容を直接編集するのには必ずしも適したフォーマットではない。
だからといって単純なカンマ/タブ区切り形式では、区切りなどが分かりづらくてデータを入力・編集しにくいし、Excelのような高度な入力支援機能も利用できない。
そこで本TIPSでは、データの入力やチェックにExcelを活用して、WSHと連携する例を紹介する。Excel形式ならば、エンド・ユーザーも使い慣れたツールなので容易に編集できるし、必要に応じて、選択ボックスを用意したり、入力値のチェックなどを設定することも可能になる。
本TIPSではExcel形式のデータ・ファイルをWSHから利用する一例として、Windows TIPS「配信リストを使ってメールをいっせいに配信する」で利用したメール配信サンプルのロジックをWSHスクリプトに置き換えてみることにしたい。なお、ここではあくまでもExcelファイルの読み込みに特化した部分を重点的に解説する。そのほかのメール配信など細かいロジックについては、先のWindows TIPS記事を参照してほしい。
手順1―追加コンポーネント「Basp21」をインストールする
本サンプルを実行するに際しては、あらかじめ追加のコンポーネントとしてBasp21をインストールしておく必要がある。Basp21の詳細やインストール方法については、先のTIPS「配信リストを使ってメールをいっせいに配信する」の手順1を参照いただきたい。
手順2―テキスト・エディタでスクリプトのコードを入力する
まずはテキスト・エディタ(メモ帳でも何でもよい)を開き、以下のコードを入力してsendmail.wsfというファイルを作成してほしい。ただし引用符(')で始まる行はコードの意味を解説するためのコメント部分なので、省略してもよい。プログラムの処理内容やExcelファイルの読み込み方法などについては、コメントを参照していただきたい。
※ファイル:sendmail.wsf
<?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?>
<?job error="true" debug="true" ?>
<package>
<job id="SendMail">
<object id="objBsp" progid="Basp21" />
<object id="objXls" progid="Excel.Application" />
<script language="VBScript">
<![CDATA[
Const END_ROW = 5
' 配信リストを記録したExcelファイルへのパスを定数CONFIGにセット
Const CONFIG="c:\sendmail.xls"
strSrv = "smtp.example.co.jp"
strFrm = "Windows News <winnews@example.co.jp>"
strSbj = "Windows 通信[2004/12/31]Office TIPS 開始"
strBdy = "こんにちは、メール配信プログラムです"
strFle = ""
' 定数CONFIGで設定されたExcelファイルをオープン
Set objBok=objXls.Workbooks.Open(CONFIG)
' 3〜END_ROW行目までをループし、○が付いている行についてのみメール送信
For i = 3 To END_ROW
strAdd = objXls.Cells(i, 4)
strNam = objXls.Cells(i, 3)
strFlg = objXls.Cells(i, 2)
If strFlg = "○" Then
If strAdd <> "" Then
strTo = strNam & "<" & strAdd & ">"
lngRst = objBsp.SendMail(strSrv, strTo, strFrm, strSbj, strBdy, strFle)
End If
End If
Next
' 処理完了後は、Excelファイルをクローズ
objXls.Quit()
]]>
</script>
</job>
</package>
|
- サンプル・ファイルのダウンロード
(注:サンプルsendmail.wsfを実行するには、上のサンプル・ファイルを右クリックしてsendmail.wsfというファイル名で保存する。さらにC:ドライブのルートにサンプル・データ・ファイルをsendmail.xlsというファイル名で保存しておく)
WSHスクリプトからExcelを利用するといっても何ら難しいことはない。Excelオブジェクトを生成した後は、Excel VBAと同じ要領でExcel内部のワークシートやセルにアクセスできることが分かるだろう。なおWSHスクリプトからExcelを使用した後は、必ずQuitメソッドでブックの終了処理を行う必要がある。さもないと、メモリ上のExcelオブジェクトがいつまでも破棄されないので注意すること。
手順3―メールを配信する
コードの記述が終わったら、実際にメールを配信してみよう。sendmail.wsfを実行するには、エクスプローラなどからsendmail.wsfをダブルクリックするだけでよい。その際、あらかじめ上記のスクリプト中の定数CONFIGで指定されたメール・アドレスのリスト(ここでは「c:\sendmail.xls」としている)が実際に存在することを確認しておいてほしい。実行後、sendmail.xls上で指定されたメール・アドレスに対してメールが送信されていれば成功だ。
今回の例では、エラー処理もしていないし、正しく送信できたかどうかも確認していないが、Basp21ではメールの配送ログを生成する機能もあるので、必要に応じて利用するとよい。Basp21でメールの配送ログを生成する方法については、Windows TIPS「テンプレートを元に複数のメールを一括配信する」で紹介しているので、併せてご覧いただきたい。
|
この記事と関連性の高い別のWindows TIPS |
|
|
generated by
|
|
TechTargetジャパン
Windows Server Insider フォーラム 新着記事
キャリアアップ

**先週の人気講座ランキング**
〜 Android編 〜