解析エンジニアの自動化 blog

コツコツと自動化した方法を残す blog

VBScript から VBScript を作成する



こんにちは。
仕事の自動化にやりがいと達成感を感じるガッくんです。



この記事の目次



目的


リンクの記事で VBScript から VBScript を実行する事に成功しました。
VBScript から VBScript を同期実行して戻り値を取得する - 解析エンジニアの自動化 blog

VBScript から別のVBScript が実行出来ると VBScript をたくさん作って、後から同期をとったり、機能の追加が簡単に行えたり、かなりプログラミングの幅が広がる基本スキルですが、 Script ファイルが増えてしまい、管理がめんどくさくなることがあります。

なので、 VBScript から別の VBScript を作成する VBScript を作成します。

これで、 VBScript が1つで良くなります。



関数

ソースコード


ForReading = 1   ' OpenTextFile 引数用変数
ForWriting = 2   ' OpenTextFile 引数用変数
ForAppending = 8 ' OpenTextFile 引数用変数
 
' プログラム作成用配列① 配列の先頭は VBScript ファイル名
PGM1 = Array( _
"Sample2.vbs", _
"msg = ""これは Sample2.vbs です。""", _
"MsgBox msg", _
"WScript.Quit(101) ' 戻り値" _
)
 
' プログラム作成用配列② 配列の先頭は VBScript ファイル名
PGM2 = Array( _
"Sample3.vbs", _
"msg = ""これは Sample3.vbs です。""", _
"MsgBox msg", _
"WScript.Quit(102) ' 戻り値" _
)
 
Call VBSMaker(PGM1)
Call VBSMaker(PGM2)
 
Set objWsh = WScript.CreateObject("WScript.Shell")

' Sample2.vbs を実行
ret2 = objWsh.Run("Sample2.vbs", , True)

' Sample3.vbs を実行
ret3 = objWsh.Run("Sample3.vbs", , True)
 
msg = "これは Sample1.vbs です。"
msg = msg & vbcrlf & _
   "ret2 = " & ret2 & vbcrlf & _
   "ret3 = " & ret3
 
MsgBox msg
 
Set objWsh = Nothing
 
 
Sub VBSMaker(arrPGM())
   With CreateObject("Scripting.FileSystemObject").OpenTextFile(arrPGM(0), ForWriting, True)
      for i = LBound(arrPGM) + 1 to UBound(arrPGM)
         .WriteLine arrPGM(i)
      next
      .Close
   End With
End Sub

使い方

上のソースコードVBScript ファイル(Sample1.vbs)をダブルクリックすると、『Sample2.vbs』、『Sample3.vbs』という VBScript ファイルを作成します。

そして、『Sample2.vbs』、『Sample3.vbs』を実行して、戻り値を取得します。
さらに、リンクの記事の図4 〜図6 と同じメッセージを表示します。
VBScript から VBScript を同期実行して戻り値を取得する - 解析エンジニアの自動化 blog



コメント

VBScript ファイルにいちいち VBScript を作成するコードを書き込むのが手間なので、そこもプログラム化したいと思います。



以上