4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VBScript超速入門

Last updated at Posted at 2020-02-22

VBScript超速入門

はじめに

いまさらながらVBScript(以下VBSと記)についての入門を書いてみる。
なぜ過去の遺産にもなりつつあるVBSについて書くかというと、単純に業務で既存VBSのコードを改修することになったから。なので自分の勉強とノートを兼ねている。
Windowsのシェルをこれから勉強したいならVBSではなくPowerShellをおススメする。

コメント

一行コメントは以下のようにシングルクォートか Rem を使う。

' コメント
Rem これもコメント

VBSには複数行コメントはない!

変数

VBSは動的型付けの言語。なので変数は宣言せずとも使えたりする。

v = 1

ただ、変数宣言の構文も用意されている。

Dim v ' 変数宣言
v = 1

ちなみに宣言と同時に初期化とかやりたくなるけど、これはエラーになるので注意。

Dim v = 1 ` これはエラーになる

定数

定数には Const を使う。
定数は宣言と同時に初期化できる。というか初期値を代入しないといけない。あたりまえだけどそのあと変更することはできない。

Const c = 1

配列

固定長配列

VBSで配列を使うには以下のように宣言。

Dim arr(2)
arr(0) = 0
arr(1) = 1
arr(2) = 2

JavaとかCの配列は、指定する数がそのまま要素数になるのだが、VBSでは指定できる最大インデックスになる。つまり、上記の指定だとインデックスが 0 から 2までの3要素をもった配列になるので注意。かくいう自分も勘違いしてた。。

動的配列

動的配列を使う場合は ReDim を使う。注意点としてReDim を使う対象の配列変数の括弧の中は空にしておくこと。

Dim arr()

ReDim arr(2)
arr(0) = 0
arr(1) = 1
arr(2) = 2

ただ、上記の記述だと再度拡張したときに、もとのデータが消失してしまう。
もとのデータを保持したまま拡張する場合は、拡張時に Preserve を付ける。

Dim arr()

ReDim arr(2)
arr(0) = 0
arr(1) = 1
arr(2) = 2

ReDim Preserve arr(3)
arr(2) = 3

制御文

条件分岐とループっていう制御文について。

条件分岐

VBSの条件分岐は If と Select Caseがある。

If文

まずは if文から。

If a = 1 Then
  ' 処理1
ElseIf a = 2 Then
  ' 処理2
Else
  ' 処理3
End If

Select Case

お次はいわゆるSwitch文。VBSではSelectだけどね。

Select Case a
Case 1
  ' 処理1
Case 2
  ' 処理2
Case Else
  ' 処理3
End Select

他の言語でよくあるswitch文のbreakは必要ない。

繰り返し(ループ)

VBSの繰り返しは大きく分けて For と While がある。

For文

For i = 1 To 3
  ' 処理
Next

残念ながらVBSには他の言語でいう continue 的なものが存在しない。

While文

While a = 1
  ' 処理
Wend

関数

VBSにはSubプロシージャFunctionプロシージャという二種類の関数が存在する。
その違いは戻り値があるかないか。

Subプロシージャ

Subプロシージャは戻り値がない関数。

Sub sampleSub
  ' 処理
End Sub

Functionプロシージャ

Functionプロシージャは戻り値がある関数。
戻り値の返したかたが、関数名と同名の変数に代入するという独特の返しかたなので注意。

Sub sampleFunc
  ' 処理
  sampleFunc = 1 ' 戻り値
End Sub

クラス

なんとVBSではクラスを扱える。

クラス定義

Class Sample
  ' フィールドおよびメソッドを定義
End Class

コンストラクタ

VBSのコンストラクタ名は Class_Initialize。

Class Sample
  Sub Class_Initialize
    ' コンストラクタの処理
  End Sub
End Class

インスタンスの生成

インスタンスの生成は newキーワードを使うというのは他の言語と一緒。
ただし注意点は インスタンスを格納する変数の前にSet を付けないといけないということ。

Dim a
Set a = new Sample

参考にしたサイト

公式ドキュメント

VBScript入門講座

4
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?