ray88’s diary

お仕事で困ったとき用の自分用の覚書

Uipath 自動で消えるメッセージボックスを組み込み

■使用状況の想定
 UR実行とAR実行両方可能とするロボで、Mainの引数に値がない場合にAR実行と判断しメッセージボックスでユーザ情報を取得する。UR実行の際に万が一引数入力を失念してメッセージボックスが出てしまう際の対処として、最初に表示されるメッセージボックスの戻り値が-1の場合は例外をthrowする処理にする。
f:id:ray88:20211008231129p:plain
f:id:ray88:20211008225308p:plain
f:id:ray88:20211008225743p:plain
f:id:ray88:20211008230006p:plain
■バッチファイルの中身

Dim TargetFilePath	'メッセージボックスの出力結果書込用のテキストファイルパス
Dim FSO			'ファイルシステムオブジェクト格納用
Dim objFile		'テキストストリームオブジェクト格納用
Dim MsgBoxResult	'メッセージボックスの出力値格納用
Dim TimeOutSecond	'メッセージボックスが消えるまでの秒数
'引数よりMsgBoxの出力結果値書込み用のテキストファイルパスを取得
TargetFilePath = Wscript.Arguments(0)
'MsgBoxが消えるまでの秒数を設定
TimeOutSecond = 10
'ファイルシステムオブジェクトを格納
Set FSO = CreateObject("Scripting.FileSystemObject")
'引数で受け取っ他テキストファイルパスよりファイルを生成
FSO.CreateTextFile TargetFilePath
'メッセージボックスの出力値を取得
MsgBoxResult = fncTest(TimeOutSecond)
'テキストファイルを開いてテキストストリームオブジェクトを取得
Set objFile = FSO.OpenTextFile(TargetFilePath,2,-2)
'テキストファイルにMsgBoxの出力値を書込
objFile.Write MsgBoxResult
'テキストファイルを閉じる
objFile.Close

Function fncTest(intSecond)
'-------------------------------------------------
'引数:MsgBoxを閉じるまでの秒数
'指定された秒数でメッセージボックスの出力値を返す
'ボタンが何も選ばれなかった場合は-1を返す
'-------------------------------------------------
Dim WSH 
    Set WSH = CreateObject("WScript.Shell")
    fncTest = WSH.Popup ("自動で閉じるメッセージ", intSecond, "Title", vbInformation)
    Set WSH = Nothing
End Function

このようなメッセージボックスが表示される
10秒以内にOKを押した場合は戻り値に1が、10秒すぎてもOKを押さなかった場合は戻り値に-1が返る。
結果はUiPathフロー内でテキストファイルに書き込む。フロー内で戻り値をテキストファイルより取得後にテキストファイルを削除する。
f:id:ray88:20211008230243p:plain