怠日記

写真・金魚・昆虫・プログラミングの趣味を語るサイトです。似たようなことをnoteにも書いたり書いてなかったり。

VBScript - 別ファイルの関数を呼び出す(疑似インポート)

スクリプトファイルが長くなるとメンテナンスがしにくくなる。
できれば別ファイルに処理を切り出して管理したい。

ExecuteGlobal ステートメントを使うことで、別ファイルに切り出した関数を呼び出せるようにできる。

(いわゆるインポートというやつが可能になる)

 

別ファイルの関数を呼び出せるようにするには、次の2ステップで処理する。

  1. ファイルを読み取る
  2. 読み取った内容を ExecuteGlobal ステートメントで実行する
 

次のスクリプトは、別ファイルの関数を利用するサンプルである。

separate-script.vbs に定義された SayHello を呼び出している。

'別ファイルのスクリプトを読み取る
Dim importScript
With CreateObject("Scripting.FileSystemObject")
  With .OpenTextFile("C:\path\to\separate-script.vbs", 1)
    importScript = .ReadAll
    .Close
  End With
End With
'ExecuteGlobal ステートメントを使ってプロシージャを作成する
ExecuteGlobal importScript
'作成したプロシージャを呼び出す
SayHello

separate-script.vbs の内容は以下のとおり。

Sub SayHello()
  WScript.Echo "Hello!"
End Sub

サンプルを実行すると “Hello!” と出力される。

 

読み取るスクリプトファイルの数はいくつでもいい。

ただし、同じ名前のプロシージャや変数があった場合は後勝ちとなる。
(あとから実行した ExecuteGlobal ステートメントで上書きされる)