- ベストアンサー
非表示になったエクセルは?
VBAマクロでパソコン画面からエクセルを非表示にする場合、 Sub TEST1() Application.visible = False End Sub で画面からエクセルが消えると思いますが、消えたエクセルはどうなってしまうのでしょうか? 何もしなければいつまでもそのままなのでしょうか? 電源を切ればでてくるのでしょうか? Application.visible = Trueで表示されるのはわかりますが、消えたエクセルにどうやってそのマクロを作動させたら良いのでしょうか? 10秒後に自動的に再表示させる方法はマクロに最初から Application.OnTime Now + TimeValue("00:00:10) などで自動実行させればよいのでしょうが、そうでない場合の再表示方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Application.visible = Falseで消えたExcelは、画面表示から消えただけなので、見えない状態のまま動き続けています。(^^; 外部からExcelのオブジェクトを操作したのなら、Excelのオブジェクトを開放すれば非表示になっているExcelを終了する事もできますが。 見えない状態のExcelを手動で操作する事はできないので、何らかの方法で外部から操作する以外に手だては無いでしょう。 NT系のOSならば、タスクマネージャのプロセスでExcelのプロセスを見つけ出して非表示になっているExcelのプロセスを強制終了が一番簡単でしょう。 9x系のタスクマネージャはウインドウが無いアプリケーションは表示されない(非表示状態のExcelは、ウインドウが存在しない)ので、Systemを再起動するのが一番簡単かも。 他のプログラム(例えばWordのVBAとか、VBSとか・・・)から非表示になっているExcelのオブジェクトを操作して表示を戻す? これも不可能ではありませんが・・・。 基本的には、Excelから起動したVBAで、Application.visible = Falseにしたら、そのプログラムが終了する前にApplication.visible = Trueに戻す事をしないといけませんね。 Sub TEST1() Application.visible = False MsgBox "ボタンを押すと、再表示" Application.visible = True End Sub ・・・とか。 Application.visibleを操作するようなマクロをテストする時は、万一アルゴリズムやコーディングに間違いがあって非表示になったまま・・・なんて事が無いように、かならずVBA Editorを起動した状態で行いましょう。 VBA Editorが動いていれば、間違いをその場で修正したり、その場で間に合わせのコードを実行して表示を元に戻したりできますから。 (Win9x系でも、下のURLにあるフリーソフトウエア等を常駐して置けば、非表示のプロセスの終了も可能かもしれません。 参考までに。)
その他の回答 (2)
- craftsman
- ベストアンサー率49% (166/336)
>すみません、Systemの再起動とはパソコンの再起動と同じことなのでしょうか? >それなら簡単に再起動して非表示になったエクセルを終了させられますね? その通りです。 Windowsを終了する時は、ウインドウがあろうが無かろうが、全ての動作中プロセスを終了しますから、Windowsを終了/再起動すれば、非表示になっているExcelも自動的に終了します。 ただ、プログラム(マクロも含めて)のテスト中に、何度も何度も再起動していたのでは、能率が悪いですからね。 先の回答にURLを書いたフリーソフトウエアのProcess++のような、非表示のプロセスを殺す事ができるツールを使用するとか。 VBAのテスト中は、常にVBA Editorを起動した状態にして置いて、間違って非表示になったままマクロが終了してしまった時になんとかできる状態にして置いた方が、効率が良いと思いますけどね。
お礼
何度も有難うございました。 よくわかりました。
- kazuhiko5681
- ベストアンサー率49% (79/159)
おはようございます。 >10秒後に自動的に再表示させる方法は・・・・・・ 前回、エクセルのVBAでマクロ実行中メッセージを表示させたいのですという質問を立てたかと思いますが、その中のNo5の回答ににヒントが隠されていると思います。 Sub Test() Dim Tmr As Variant Application.Visible = False Tmr = Timer Do While Timer < Tmr + 10 'Tmr+1の1は秒数です。10にすれば10秒です。 Loop Application.Visible = True End Sub このコードをエクセル2000で実行しましたが、1度画面から消えて、10秒後に自動で表示されました。 お試しになってみて下さい。
お礼
いつもご教示いただき有難うございます。 ただ今回の質問は自動で表示する方法ではなく、それ以外の方法という質問だったのです。すみません。
お礼
ご回答ありがとうございます。 >9x系のタスクマネージャはウインドウが無いアプリケーションは表示されない(非表示状態のExcelは、ウインドウが存在しない)ので、Systemを再起動するのが一番簡単かも。 すみません、Systemの再起動とはパソコンの再起動と同じことなのでしょうか? それなら簡単に再起動して非表示になったエクセルを終了させられますね? 教えて下さいますようお願いします。