少し実用的なスクリプトを書いてみました。未熟さや書き間違えが原因でうまく動作しなかったらごめんなさい。意とするところを汲んでいただいて訂正なり,更なる改良を加えてよりよいものにしていただくことは望むところです。
半径から円と球の情報を計算する。If 文使用例
| '半径から円と球の情報を計算する 'アイコンをダブルクリックして実行 Const PI = 3.14 r = InputBox ("半径の大きさを入力してください。", "calcr.vbs") If r = "" Then '「キャンセル」
ボタンがクリックされたら If IsNumeric ( r ) Then '正しく入力された場合 Else '何も入力されないか数字でない場合 |
テキストファイルの文字数を数えて表示する。文字数制限のある原稿を依頼されたとき、書いている途中で今何文字ぐらいになったかをみるのに使おうと書いてみた。Wordで書いたDoc形式のファイルに対応させるには改良が必要である。
| 'テキストの文字数を数えて表示する。 '文字数を数えたいファイルのアイコンをこの上にドラッグアンドドロップする。 On Error Resume Next 'ドラッグアンドドロップされたファイルのフルパス名を取得 '使い方を間違えてファイル名が取得できなかった場合のヘルプ 'FileStreamオブジェクトを用意する。 str = "" '文字数を計算して表示 Set objFileStream = Nothing |
何も記述されていないスクリプトファイルを起動するスクリプト。テキストエディタを起動すると何も書かれていないtxtファイルが開かれるように,常用しているテキストエディタで新たにvbsファイルが開くようにできると便利である。
| 'vbsファイルを新規に作成する。そのファイル名はInputBoxで指定する。 'ダブルクリックで実行する。 'editerに編集に使用するテキストエディタを指定する。パスが通っていないときはパスも指定する。 Set objFsys = CreateObject ("Scripting.FilesystemObject") Do While True '正しいファイル名が入力されるまで繰り返す処理 If filename = "" Then 'キャンセルボタンがクリックされたら終了
End If Loop 'ファイルを新規作成 'ShellオブジェクトのRunメソッドでエディタを起動する
Wscript.Sleep 200 '次の行を実行するのを200ミリ秒遅らせる Set objShell = Nothing |
xls形式のファイルをこのスクリプトのアイコン上にドロップすることによって,txtファイルに変換する。WorkBookに複数のシートがある場合は想定していないので,1枚目のシートのみが変換の対象になる。できあがったテキストは元のシートの記述形式からは大きくくずれるものがある。大事なファイルなら "元のxlsファイルを削除しますか。"と聞かれたら,「 いいえ 」 を選択してください。
(参考) ファイル形式とFORMATの値
HTML形式 ---> 44 ( EXTER = "htmlあるいはhtm" )
サイズはむしろ大きくなる。CSV形式 ---> 6 ( EXTER ="csv" )
テキストがタブ区切りになるのに対して,コンマ ( , ) 区切りになる。テキスト形式よりこちらの方がいいかもしれない。
| 'xls形式のファイルを他の形式に変換する 'xlsのファイルアイコンをドラッグ&ドロップする '次の定数 FORMAT,EXTER
を換えれば他の形式に変換するように作り変えることが出来る。 On Error Resume Next '途中でエラーが発生してもメモリにExcelを残さないように Set objArgs = WScript.Arguments '間違った使い方したときのメッセージ 'WorkBookオブジェクトから必要な情報を取得 'xls形式ではないファイルをドロップされた場合を想定して '保存するファイルのフルパス名を決定 '保存するファイルと同名のファイルが存在する場合いったんそれを削除する If bjFsys.FileExists (savefile) = True Then objBook.SaveAs savefile, FORMAT '変換ファイルの作成を実行 '変換元のファイルを削除するかどうかたずねてから削除を実行する If ret = vbYes Then '終了処理(使ったオブジェクトを開放) |
vbsファイルも作成が進んで数が多くなると名前だけでは内容がわかりにくくなる。Excelのシートに一覧表としてしておくことを自動化してみた。そのために,スクリプトは一つのフォルダにまとめておく。それぞれのスクリプトの1行目には説明文を,2行目には起動の仕方をコメント行として入れておく。本スクリプトも同じフォルダに置いてダブルクリックで実行する。
| 'vbsファイルの一覧表を作成する。一覧にするファイルと本スクリプトを一つのフォルダに置いておく。 '本スクリプトをダブルクリックして実行 'strtypeの値を他のものに変えるとその一覧表ができる On Error Resume Next 'エラーに備えて入れておく XLSNAME = "tableofvbs.xls" '保存ファイル名 Set objFsys = CreateObject
("Scripting.FilesystemObject") 'Excelアプリケーションオブジェクトの生成 '表の体裁を整える rowi = 2 '2行目から書き始める For Each fi in objFiles 'おのおののFileオブジェクト( fi で受ける)から情報を取り出して記入 If fi.Type = strtype Then '他のタイプのファイルは除外する '次の2行は読み込む行がないとき(たとえば新規のファイル)エラーが発生する。 'データの記入 '保存ディレクトリがルートディレクトリのときは
"\" は初めから付いている '同一フォルダに,用意した名前(XLSNAME)で保存する 'Excel
を手動で閉じるときの問い合わせメッセージが出ないようにする |
最後にわたしのスクリプト集をダウンロードできるようにしておきます。中途半端なものやテスト用に使用したもの雑多です。 中にはMsAgentの環境が整っていないと実行できないようなものも含んでいます。興味のある方は ここからどうぞ。