• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBS 入力可能状態を判別できますか?)

VBSでEXCELを入力可能状態にした後終了する方法はある?

このQ&Aのポイント
  • VBSでEXCELを起動し、入力可能状態(アイドル状態)にし、その後終了する方法はありますか?現在、特定のプロセスを終了するという方法を使用しているため、アイドル状態になる前に終了してしまいます。
  • VBではアイドル状態か否かを判断できるようですが、VBSでは同じことができるのかわかりません。現在、処理のタイミングにばらつきが出てしまうため、入力可能状態まで待った上で終了する方法を探しています。
  • 開発環境が揃っていないため、VBSで作成する予定です。VBSは社内のGPOからログインスクリプトとして配布する予定です。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.4

WMI を使えば VBS でも取得できました。 プロセッサ(CPU)の使用率を取得する: WIN32_Processor - WMI Sample (VBS) http://www.wmifun.net/sample/win32_processor_b.html ただ起動中だと CPU の使用率は大きく上下しますし マルチコアの CPU だと1コアしか使わないアプリも 有ったりしますので、1秒間に3回計測して・・とか 各CPU の使用率の合計(平均)を求めなくてはならないかも。

その他の回答 (3)

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.3

>VBではアイドル状態か否かを判断することができる?らしいのですがVBSにて同じことができるのかどうかはわかりませんでした VBだと http://jeanne.wankuma.com/tips/vb.net/process/waitforinputidle.html これですね、VBSでは使えないようです Visual Basic 2010 Expressなら無料で利用可能ですから http://www.microsoft.com/japan/msdn/vstudio/express/ この際Visual Basicで作ってみたらいかがでしょうか

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.2

>EXCELをWindows起動時に立ち上げ、 >アイドル状態(入力可能状態)になった後、 > この動作がどんな意味を持つのかが良くわかりません(なぜ必要なのかも) 1.エクセルの起動は新規ブックで開くのか既存ブックを開くのか ・どちらにせよスタートアップにエクセル又は既存ブックを登録すればいいのでは? 2.アイドル状態とは、Windowsのシステムが?それともエクセルが起動して操作可能な状態になった事を意味しているのか? 3.何もせずにExcelを終了する・・・・これが一番意味がわからない ・エクセルを起動してそのまま閉じる事自体に何の意味があるのか、何が目的なのかがまったくわかりません。 4.VBSでの動作にこだわっているのか? 意味を理解していないので、見当違いかもしれませんが 1.どんな状態でもエクセルが起動すれば良い 2.エクセルが動作可能な状態 3.とりあえずエクセルの起動を確認後終了したい 4.どんな形式でもPC起動時にエクセルを開いて閉じる動作であれば良い と言うのが条件であれば ※スタートアップに ------- Private Sub Workbook_Open() Application.Quit End Sub ------- ブックに上記のマクロを書き込んだブックを登録する 上記動作で実現可能ですが たぶんやりたい事はこんなことじゃないんだろうな???

naana2
質問者

補足

ご回答ありがとうございます ご指摘の件なのですが、 特にExcelで何か処理する訳でなく、やりたいことはエクセルの完全な起動と終了だけなのです。 詳しく書きますと、Excelをサーバー上で動かす仮想アプリをユーザーに配布しようとしているのですが、このアプリがちょっと癖があり、ユーザーがexeをクリックした後の初回起動がかなり遅いのです。 ソフトメーカー曰く起動のためにキャッシュをメモリ上にロードするのに時間がかかるとのことだったので、何とかWindows起動時にこのエクセルを完全起動→終了という動作をしてキャッシュをユーザーの意図とは無関係に初めにロードさせたいというのが目的です。 手動で起動→終了では問題なくロードされ、アプリの再起動はさほど時間はかからないのですが、 自分が作ったプログラムではExcelのプロセスが上がってすぐに終了の動作をはじめるため、ロードする間もなく、画面表示的にもExcelの起動してますよってロゴの画面も表示されずにすぐに終了となってしまいます。 ですので、 Excelを起動 完全に起動したのを確認 Excelの終了 というように完全に起動したのを確認するという動作はVBSで可能でしょうか?というご質問でした。 わかりにくくて申し訳ありません。 VBSにこだわっているのは開発環境がないので、テキストエディタだけで気軽に編集できるものという認識の上です。 ちなみにですが、、確かに言われている通り、 Private Sub Workbook_Open() Application.Quit End Sub を記述したExcelファイルをスタートアップに入れておけば万事解決ですね;;;汗 目的達成しています・・・が、ごめんなさい。他のアプリケーションでも今後こういったことがあるかもしれないので、申し訳ありませんがもうしばらくVBSでのやり方をご教授願えないでしょうか?

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

現状ソースがないので確たることは言えませんが、 > EXCELをWindows起動時に立ち上げ、 > アイドル状態(入力可能状態)になった後、 > 何もせずにExcelを終了する と書かれている事と > 特定のプロセスを終了するというような書き方をしているために、起動してプロ > セスが上がった瞬間に次のプログラムコードにて、そのプロセスを終了してしま > いアイドル状態になるまえに終了してしまう状況です。 との記述の関係がよく分かりません。 ・起動したEXCEL画面でユーザーに何か入力させたいのか。 ・入力させたいなら、そのデータをどのように処理したいのか。 を教えていただけませんか? 個人的には、VBScriptから"Excel.Application"をCreateObjectし、新たなWorkbookをオープンして、 そこにデータを入力させるか、サーバー上のWorkbookを指定してGetObjectしたシートに入力して もらい、別名(ユーザーのPCの環境変数「COMPUTERNAME」「USERDOMAIN」あたりを使って)で サーバーの特定フォルダに保存してもらうような動作なら納得がいくのですが。 http://www.whitire.com/vbs/tips0115.html

naana2
質問者

補足

ご回答ありがとうございます ご指摘の件なのですが、 特にExcelで何か処理する訳でなく、やりたいことはエクセルの完全な起動と終了だけなのです。 詳しく書きますと、Excelをサーバー上で動かす仮想アプリをユーザーに配布しようとしているのですが、このアプリがちょっと癖があり、ユーザーがexeをクリックした後の初回起動がかなり遅いのです。 ソフトメーカー曰く起動のためにキャッシュをメモリ上にロードするのに時間がかかるとのことだったので、何とかWindows起動時にこのエクセルを完全起動→終了という動作をしてキャッシュをユーザーの意図とは無関係に初めにロードさせたいというのが目的です。 手動で起動→終了では問題なくロードされ、アプリの再起動はさほど時間はかからないのですが、 自分が作ったプログラムではExcelのプロセスが上がってすぐに終了の動作をはじめるため、ロードする間もなく、画面表示的にもExcelの起動してますよってロゴの画面も表示されずにすぐに終了となってしまいます。 ですので、 1.Excelを起動 2.完全に起動したのを確認 3.Excelの終了 というように完全に起動したのを確認するという動作はVBSで可能でしょうか?というご質問でした。 わかりにくくて申し訳ありません。 よろしくお願いいたします。

関連するQ&A