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

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

VBScript で書く自動的に消えるメッセージボックス!!




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



この記事の目次




目的


自動化のプログラムでもメッセージボックスを表示させたい事はあります。

でも、標準のメッセージボックスだと、 OK ボタン等をクリックしないと次の処理に進みません。人間によるクリック動作が介在してしまうと自動化の意味が無くなってしまいます。

そこで、任意の時間だけメッセージを表示させたら、自動的に消えるメッセージボックスを関数にしてメモをしておきます。




関数

ソースコード

この関数は表示させたい文字列と表示させたい秒数を引数で渡すと、指定秒数だけ表示させたい文字列を表示した後、自動的に消えます。
『VBS』というフォルダの中に『myFunc』というフォルダを作成していて、自作した関数は全て『myFunc』フォルダに保存しています。

AutoMsg.vbs

function AutoMsg(ByVal strMsg, ByVal intTime)
   '--------------------------------------------------------------
   ' シェルオブジェクトの生成
   '--------------------------------------------------------------
   Set objShell = WScript.CreateObject("WScript.Shell")
   '--------------------------------------------------------------
   ' メッセージ表示
   '--------------------------------------------------------------
   objShell.PopUp strMsg, intTime
   '--------------------------------------------------------------
   ' メモリ解放
   '--------------------------------------------------------------
   Set objShell = Nothing
end function

使い方

作成した AutoMsg.vbs ファイルを呼び出して使うプログラムを書きます。
このプログラムは『VBS』フォルダの直下に保存します。

main.vbs

'------------------------------------------------------------------------------
' 自作関数のインクルード
'------------------------------------------------------------------------------
call IncludeFunction()

'-----------------------------------
'--- 自動的に消えるメッセージボックス ---
'-----------------------------------
   '--- 変数宣言 ---
   strMSG = "表示させたい文字列"
   Tsec = 5
   '--- 実行 ---
   call AutoMsg(strMSG, Tsec)

'------------------------------------------------------------------------------
' 終了通知
'------------------------------------------------------------------------------
MsgBox wscript.scriptname & " の処理が完了しました。"
'------------------------------------------------------------------------------
' 自作関数をコールするサブルーチン
'------------------------------------------------------------------------------
sub IncludeFunction()
   '----------------------------------------------------------------------------
   ' 自分(=VBSファイル)のディレクトリを取得する
   '----------------------------------------------------------------------------
   FullPath = wscript.scriptfullname
   FileName = wscript.scriptname
   pathLen= len(FullPath) - len(FileName)
   crrDir = left(FullPath, pathLen)
   chiDir = "myFunc"
   crrDir = crrDir & chiDir
   '----------------------------------------------------------------------------
   ' ファイルシステムを扱うオブジェクトを作成
   '----------------------------------------------------------------------------
   Set objFileSys = CreateObject("Scripting.FileSystemObject")
   '----------------------------------------------------------------------------
   ' フォルダのオブジェクトを取得
   '----------------------------------------------------------------------------
   Set objFolder = objFileSys.GetFolder(crrDir)
   '----------------------------------------------------------------------------
   ' FolderオブジェクトのFilesプロパティからFileオブジェクトを取得
   '----------------------------------------------------------------------------
   For Each objFile In objFolder.Files
      '--------------------------------------------------------------------------
      ' 自作関数のコール
      '--------------------------------------------------------------------------
      FuncFile = objFile.Name
      if instr(1, FuncFile, ".txt") = 0 then
         Set objFile = objFileSys.OpenTextFile(crrDir & "\" & FuncFile)
         ExecuteGlobal objFile.ReadAll()
         objFile.Close
      end if
   Next
   '----------------------------------------------------------------------------
   ' メモリ解放
   '----------------------------------------------------------------------------
   Set objFile = Nothing
   Set objFolder = Nothing
   Set objFileSys = Nothing
end sub




コメント

main.vbs を実行すると『表示させたい文字列』という文字列が5秒間表示されて自動的にメッセージが消えたと思います。
3行で書ける内容なんで、関数化する必要性が無いかもしれません。そこは、臨機応変にコーディングしましょう。




以上