VBScript 【応用編】



目次


関数

2つ引数を乗算する関数を呼び出す処理について解説します。

プログラムソース

Option Explicit

Dim X,Y,Z

X = 2

Y = 3

Z = MyFunc(X,Y)

MsgBox Z


Function MyFunc(ByVal A, ByVal B)

   MyFunc = A * B

End Function

解説

変数 = 関数名(引数…)

関数を呼び出します。

Function 関数名(引数…)
 関数名 = 戻り値
End Function

関数を定義します。


ファイル操作

ファイルの存在有無による処理分岐について解説します。

プログラムソース

Option Explicit

Dim Fs

Set Fs = CreateObject("Scripting.FileSystemObject")

If Fs.FileExists("テキスト.txt") Then

   Fs.DeleteFile("テキスト.txt")

Else

   MsgBox "ファイルが存在しません。"

End If

Set Fs = Nothing

解説

Scripting.FileSystemObject

ファイル操作に使用するオブジェクト

Set オブジェクト変数 = CreateObject(プログラム識別子)

オブジェクト(部品)のインスタンス(実体)を生成します。

オブジェクト.FileExists(ファイル名)

ファイルが存在するか調べます。

オブジェクト.DeleteFile(ファイル名)

ファイルを削除します。


ファイル入出力

テキストファイルを読み込み、その内容をテキストファイルに出力する処理について解説します。

プログラムソース

Option Explicit

Dim Fs
Dim Rf,Wf

Set Fs = CreateObject("Scripting.FileSystemObject")

Set Rf = Fs.OpenTextFile("入力.txt",1)
Set Wf = Fs.OpenTextFile("出力.txt",2)

Do Until Rf.AtEndOfStream

   Wf.WriteLine Rf.ReadLine

Loop

Rf.Close
Set Rf = Nothing
Wf.Close
Set Wf= Nothing
Set Fs = Nothing

解説

Scripting.FileSystemObject

ファイル操作に使用するオブジェクト

オブジェクト.OpenTextFile(ファイル名,入出力モード)
入出力モード
 1.読み取り専用モード
 2.上書きモード

ファイルを開きます。

オブジェクト.AtEndOfStream

ファイルの末尾か確認します。

オブジェクト.ReadLine

ファイルから1行を取得します。

オブジェクト.WriteLine 文字列

指定した文字列を書き込みます。

オブジェクト.Close

ファイルを閉じます。


外部プログラム実行

外部プログラムの実行処理について解説します。

プログラムソース

Option Explicit


Dim Ws


Set Ws = CreateObject("Wscript.Shell")


Ws.Run "notepad.exe"


Set Ws = Nothing

解説

Wscript.Shell

Windows操作に使用するオブジェクト

オブジェクト.Run

プログラムを起動します。


コマンドライン引数

スクリプトファイルに引数を渡して実行する処理について解説します。

プログラムソース

メイン.vbs
Option Explicit

Dim Ws

Set Ws = CreateObject("Wscript.Shell")

Ws.Run "サブ.vbs aaa bbb"

Set Ws = Nothing
サブ.vbs
Option Explicit

MsgBox "引数1:" & Wscript.Arguments(0) 
 
MsgBox "引数2:" & Wscript.Arguments(1) 

解説

オブジェクト.Run [スクリプトファイル名] [引数…]

スクリプトファイルを呼び出します。

Wscript.Arguments(0)

引数を参照します。


エラー処理

エラー処理について解説します。

プログラムソース

Option Explicit
On Error Resume Next

Dim X

X = 1 / 0

If Err.Number = 0 Then

   MsgBox "正常"

Else

   MsgBox "失敗"
   Err.Clear

End If

解説

On Error Resume Next

エラー発生時に、処理を続行します。

Err.Number

エラー番号を参照します。