電子書籍の厳選無料作品が豊富!

VBAです、
長い動画のエンコード後に
自動でPCがシャットダウンするようにしたいのですが
その前にシャットダウンするかどうかのメッセージボックスを出したいと考えています。


Dim rc As Integer


Dim WSH As Object
Set WSH = CreateObject("WScript.Shell")
rc = WSH.Popup("シャットダウンしますか?(3分後に自動実行)", 180, "自動シャットダウン", vbOKCancel)

Set WSH = Nothing

If rc = vbOK Or rc = -1 Then '1 vbOK 2 vbCancel -1 自動停止した場合


Call Shell("shutdown -s -t 3", vbHide) '3秒後に自動シャットダウン
Application.Quit
ThisWorkbook.Close SaveChanges:=False

End If

プログラムの終了後にこのコードを実行するとメッセージボックスが表示され、
3分間キャンセルボタンが押されないと自動でシャットダウンします。


上記のコードだけ実行してみると
うまくいくのですが、
長い動画のエンコード後にやってみると
まだ二回しか試していませんが、
rc = WSH.Popupのところで止まって先に進みません。

動画のエンコーダーは正常に終了させていますし、
そもそも何か他のプログラムが実行されていたとしても
rc = WSH.Popupが自動で閉じるという動作には影響を与えないはずです。

ちなみに、エンコーダーを短時間起動していた場合には
この現象が起きないので
長時間PCを起動したままであることが原因でしょうか?



対策とかあれば教えてください。

質問者からの補足コメント

  • ありがとうございます。

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/12/03 11:56

A 回答 (1件)

>rc = WSH.Popupのところで止まって先に進みません。


この段階で何もメッセージが出てこないのでしょうか?
また、そこから、F5 か F8 で進めた時にどうなるか・・・。

PS.
Set WSH = CreateObject("WScript.Shell")
の後におまじないの行を挿入
Doevents
では?
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!