Hello World
WScript.Echo "Hello World"
文法
行末にセミコロンは不要。
コメントアウト
シングルクォーテーション以降はコメント扱いになる。
複数行コメント【/* コメント */】は対応していない。
マルチステートメント
コロン【:】で複数命令を1行で記述できる。
コードの途中改行
行末にアンダーバー【_】を入れると、次の行がコードの続きとして扱われる。
変数名、関数名は大文字小文字の区別なし。
オブジェクトへの参照を代入する。
Set
文字リテラル
文字列はダブルクォーテーションで囲む。
数字をダブルクォーテーションで囲めば、文字列として扱われる。
文字の連結はアンパサント【&】を使う。
"hoge" & "hoge"
型宣言
なし、基本Variant型。
変数宣言と同時に初期化できない。
【Dim strTes="Hello World"】はエラーになる。
マルチステートメントを使う。【Dim strTes : strTes="Hello World"】
関数宣言
サブプロシージャ
Sub TestSub(arg1,arg2)
strSample =arg1 & arg2
WScript.Echo strSample
End Sub
関数プロシージャ
Function TestFunc(arg1,arg2)
TestFunc=arg1 & arg2
End Function
サブプロシージャと関数プロシージャの違い
サブプロシージャ戻り値なし。
関数プロシージャ戻り値あり。
関数呼び出し
サブプロシージャ
TestSub "aaa","bbb"
括弧をつけるとエラーになる。
Result = TestFunc("aaa","bbb")
括弧をつけないとエラーになる。
変数のスコープ
プロシージャ内部で変数を宣言した場合、プロシージャ内でローカル変数となる。
プロシージャ外部で変数を宣言した場合、スクリプトレベル変数と言うグローバル変数となる。
プロシージャ内で参照可能なので、変数名が被らないように注意が必要。
main()を宣言しスクリプトレベル変数を宣言しないようにする。
Call main()
Sub main()
'処理を記述する。
End Sub
条件分岐
If文
If (intMonth < 1 Or 12 < intMonth) Then
WScript.Quit(0)
ElseIf 条件式 Then
実行文
End If
For文
For i = 1 To 10 Step 1
hoge=hoge & i
Next
GotoはSub又はFunctionの呼び出しで代用する。
WScript.Quit(0)がEndに相当。
演算子
論理積
And
論理和
Or
ファイル入出力
テキストファイルを1行ずつ読み込む。
Dim strFilePath : strFilePath = "FileName.txt" '相対パス、絶対パスともに可。
Dim objFileSystem : Set objFileSystem = CreateObject("Scripting.FileSystemObject")
Dim objReadFile : Set objReadFile = objFileSystem.OpenTextFile(strFilePath)
Do Until ( objFile.AtEndOfStream )
WScript.Echo objReadFile.ReadLine
Loop
objFile.Close
ファイル書き込み
Dim strFilePath : strFilePath = "FileName.txt" '相対パス、絶対パスともに可。
Dim objFileSystem : Set objFileSystem = CreateObject("Scripting.FileSystemObject")
Dim objWriteFile : Set objWriteFile = objFileSystem.CreateTextFile(strFilePath, True)
objWriteFile.WriteLine("hoge hoge")
objWriteFile.Close
ファイルの実行
DOSプロンプトの実行
Dim objShell : Set objShell = CreateObject("WScript.Shell")
objShell.Run "cmd.exe /c dir > DirResult.txt",0
0 非表示、1 通常ウィンドウ、2 最小化、3 最大化
プログラムの起動
Dim objShell : Set objShell = CreateObject("WScript.Shell")
objShell.Run "C:\Windows\System32\notepad.exe"
その他
改行コード
Chr(13) & Chr(10)
文字列切り出し
Mid(切り出し対象,何文字目から,何文字取り出す)
一文字目は0でなく、1で表わされる。
雑テクニック
YYYYMMDDHHmmの文字列作成
Mid(Now(),1,4) & Mid(Now(),6,2) & Mid(Now(),9,2) & Mid(Now(),12,2) & Mid(Now(),15,2)
先月の月を返す
Month(DateSerial(Year(Date), Month(Date), 0))
月の最終日付を返す
Day(DateSerial(intYear, intMonth + 1, 1) - 1)
キャンセルボタンを押したときの処理。
intMonth = InputBox("月を入力してください",,Month(DateSerial(Year(Date), Month(Date), 0)))
IF IsEmpty(intMonth) Then
WScript.Quit(0)
End If
課題
On Error Resume Nextのエレガントな使い方。
参考
http://msdn.microsoft.com/ja-jp/library/cc392489.aspx
2011年6月5日日曜日
VBScript カンペ
作業にVBSを使ったので、調べた内容をメモ。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿