シナリオを止めないでメッセージボックスを出すためのVBS
シナリオは止めたくないけど、途中で起きたことを画面に出しておきたい。WinActorが終了しても、メッセージは残しておきたい。
このようなことはありませんか?
私が必要になり、簡単ですがVBSでメッセージを出すものを作りましたので、ご提供します。
下記のプログラムは、msgbox.vbsというファイル名で、保存してください。
シナリオから使用するときは、ノードの「コマンド実行」で指定します。
プロパティは、
コマンドにmsgbox.vbsのパス
オプションは表示メッセージ(※1)
オプションは起動のみ(追加起動しない)を選択します。
※1表示メッセージについて
・最初に、1~4を指定すると、マークが表示されます。(1:i、2:!、3:×、4:?)
・メッセージはスペースで区切って指定すると、改行されて表示します。(個数に制限はありあせん)
横に繋げたいときは”で囲んでください。(メッセージは、文字列連結で作成してください)
・先頭に@を付けると、メッセージボックスのタイトルになります。
(コマンドプロンプトで、msgbox.vbs /?を入力すると、この説明を表示します)
例)
コマンド:値=>\\FileServer\共通\msgbox.vbs
オプション:値=>3 処理Aでエラー発生 "コマンド:SORT AA.B" 確認してください "@シナリオA 処理Aエラー"
msgbox.vbsというファイル名で保存してください。また、文字コードは、Shift-JIS(ANSI)で保存してください。
Option Explicit
Dim intArgsCnt , msg , i , title , mark , parm
intArgsCnt = Wscript.Arguments.Count
msg=""
title=""
mark = 0
if intArgsCnt > 0 Then
i = 0
Do until i = intArgsCnt
parm = Wscript.Arguments(i)
if i = 0 And parm = "/?" then
Call Help
Wscript.Quit
elseif i = 0 And inStr("1 2 3 4 ",parm) > 0 then
Select Case CInt(parm)
Case 1 : mark = vbInformation 'i
Case 2 : mark = vbExclamation '!
Case 3 : mark = vbCritical '×
Case 4 : mark = vbQuestion '?
End Select
elseif Left(parm,1) = "@" then
title = Right(parm,Len(parm)-1)
else
if msg <> "" Then
msg = msg & vbCrLf
end if
msg = msg & Wscript.Arguments(i)
end if
i = i + 1
Loop
end if
msgbox msg,mark,title
'========================================
'説明表示
'========================================
Sub Help()
Dim hmes
hmes = "msgbox.vbs [マーク番号] メッセージ1 [メッセージ2[・・]] [@タイトル]" & vbCrLf & vbCrLf
hmes = hmes & "メッセージボックスを表示する。" & vbCrLf & vbCrLf
hmes = hmes & "マーク番号:" & vbCrLf
hmes = hmes & " 1:i (Information)" & vbCrLf
hmes = hmes & " 2:! (Exclamation)" & vbCrLf
hmes = hmes & " 3:× (Critical)" & vbCrLf
hmes = hmes & " 4:? (Question)" & vbCrLf
hmes = hmes & "メッセージ:" & vbCrLf
hmes = hmes & " 表示したいメッセージ。スペースで区切ると改行して表示。" & vbCrLf
hmes = hmes & " 横に繋げて表示したい場合は、" & Chr(34) & "で囲む。" & vbCrLf
hmes = hmes & "タイトル:" & vbCrLf
hmes = hmes & " 先頭に@を付け、ウィンドウのタイトルを指定する。" & vbCrLf & vbCrLf
hmes = hmes & "例)" & vbCrLf
hmes = hmes & "msgbox.vbs 2 処理Aでエラー発生 " & Chr(34) & "コマンド:SORT AA" & Chr(34) & " 確認してください @処理A"
msgbox hmes,vbOkOnly,"msgbox.vbs Help"
End Sub