いつもお世話になります。
現在、社内でVBSで以下のようなものを作成しているのですが、是非ともお知恵をお貸しくださいませ。
EXCELをWindows起動時に立ち上げ、
アイドル状態(入力可能状態)になった後、
何もせずにExcelを終了する
というVBSを作成する必要があるのですが、
これを実現するにあたって、ネットなどで検索しながら自分で作成したところ、確かに起動→終了という動作は問題なくするのですが具体的には特定のプロセスを終了するというような書き方をしているために、起動してプロセスが上がった瞬間に次のプログラムコードにて、そのプロセスを終了してしまいアイドル状態になるまえに終了してしまう状況です。
勉強不足で詳しくわからないのですが、VBではアイドル状態か否かを判断することができる?らしいのですがVBSにて同じことができるのかどうかはわかりませんでした。
現在は起動したあとに次の処理が実行されるまでX秒待つというようなコードを入れてごまかしながら作っていますが、やはり状況、環境によって処理のタイミングにばらつきが出てしまうので、なんとか入力可能状態まで待った上で終了というフローにしたいのですが・・・・
どのように作成すればよいでしょうか?ご回答のほどお願いいたします。
尚、開発環境がそろっていないので、できればVBSで作成したいと思っております。
VBSは社内のGPOよりログインスクリプトで配布する予定です。
よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
WMI を使えば VBS でも取得できました。
プロセッサ(CPU)の使用率を取得する: WIN32_Processor - WMI Sample (VBS)
http://www.wmifun.net/sample/win32_processor_b.h …
ただ起動中だと CPU の使用率は大きく上下しますし
マルチコアの CPU だと1コアしか使わないアプリも
有ったりしますので、1秒間に3回計測して・・とか
各CPU の使用率の合計(平均)を求めなくてはならないかも。
No.3
- 回答日時:
>VBではアイドル状態か否かを判断することができる?らしいのですがVBSにて同じことができるのかどうかはわかりませんでした
VBだと
http://jeanne.wankuma.com/tips/vb.net/process/wa …
これですね、VBSでは使えないようです
Visual Basic 2010 Expressなら無料で利用可能ですから
http://www.microsoft.com/japan/msdn/vstudio/expr …
この際Visual Basicで作ってみたらいかがでしょうか
No.2
- 回答日時:
>EXCELをWindows起動時に立ち上げ、
>アイドル状態(入力可能状態)になった後、
>
この動作がどんな意味を持つのかが良くわかりません(なぜ必要なのかも)
1.エクセルの起動は新規ブックで開くのか既存ブックを開くのか
・どちらにせよスタートアップにエクセル又は既存ブックを登録すればいいのでは?
2.アイドル状態とは、Windowsのシステムが?それともエクセルが起動して操作可能な状態になった事を意味しているのか?
3.何もせずにExcelを終了する・・・・これが一番意味がわからない
・エクセルを起動してそのまま閉じる事自体に何の意味があるのか、何が目的なのかがまったくわかりません。
4.VBSでの動作にこだわっているのか?
意味を理解していないので、見当違いかもしれませんが
1.どんな状態でもエクセルが起動すれば良い
2.エクセルが動作可能な状態
3.とりあえずエクセルの起動を確認後終了したい
4.どんな形式でもPC起動時にエクセルを開いて閉じる動作であれば良い
と言うのが条件であれば
※スタートアップに
-------
Private Sub Workbook_Open()
Application.Quit
End Sub
-------
ブックに上記のマクロを書き込んだブックを登録する
上記動作で実現可能ですが
たぶんやりたい事はこんなことじゃないんだろうな???
この回答への補足
ご回答ありがとうございます
ご指摘の件なのですが、
特にExcelで何か処理する訳でなく、やりたいことはエクセルの完全な起動と終了だけなのです。
詳しく書きますと、Excelをサーバー上で動かす仮想アプリをユーザーに配布しようとしているのですが、このアプリがちょっと癖があり、ユーザーがexeをクリックした後の初回起動がかなり遅いのです。
ソフトメーカー曰く起動のためにキャッシュをメモリ上にロードするのに時間がかかるとのことだったので、何とかWindows起動時にこのエクセルを完全起動→終了という動作をしてキャッシュをユーザーの意図とは無関係に初めにロードさせたいというのが目的です。
手動で起動→終了では問題なくロードされ、アプリの再起動はさほど時間はかからないのですが、
自分が作ったプログラムではExcelのプロセスが上がってすぐに終了の動作をはじめるため、ロードする間もなく、画面表示的にもExcelの起動してますよってロゴの画面も表示されずにすぐに終了となってしまいます。
ですので、
Excelを起動
完全に起動したのを確認
Excelの終了
というように完全に起動したのを確認するという動作はVBSで可能でしょうか?というご質問でした。
わかりにくくて申し訳ありません。
VBSにこだわっているのは開発環境がないので、テキストエディタだけで気軽に編集できるものという認識の上です。
ちなみにですが、、確かに言われている通り、
Private Sub Workbook_Open()
Application.Quit
End Sub
を記述したExcelファイルをスタートアップに入れておけば万事解決ですね;;;汗
目的達成しています・・・が、ごめんなさい。他のアプリケーションでも今後こういったことがあるかもしれないので、申し訳ありませんがもうしばらくVBSでのやり方をご教授願えないでしょうか?
No.1
- 回答日時:
現状ソースがないので確たることは言えませんが、
> EXCELをWindows起動時に立ち上げ、
> アイドル状態(入力可能状態)になった後、
> 何もせずにExcelを終了する
と書かれている事と
> 特定のプロセスを終了するというような書き方をしているために、起動してプロ
> セスが上がった瞬間に次のプログラムコードにて、そのプロセスを終了してしま
> いアイドル状態になるまえに終了してしまう状況です。
との記述の関係がよく分かりません。
・起動したEXCEL画面でユーザーに何か入力させたいのか。
・入力させたいなら、そのデータをどのように処理したいのか。
を教えていただけませんか?
個人的には、VBScriptから"Excel.Application"をCreateObjectし、新たなWorkbookをオープンして、
そこにデータを入力させるか、サーバー上のWorkbookを指定してGetObjectしたシートに入力して
もらい、別名(ユーザーのPCの環境変数「COMPUTERNAME」「USERDOMAIN」あたりを使って)で
サーバーの特定フォルダに保存してもらうような動作なら納得がいくのですが。
http://www.whitire.com/vbs/tips0115.html
この回答への補足
ご回答ありがとうございます
ご指摘の件なのですが、
特にExcelで何か処理する訳でなく、やりたいことはエクセルの完全な起動と終了だけなのです。
詳しく書きますと、Excelをサーバー上で動かす仮想アプリをユーザーに配布しようとしているのですが、このアプリがちょっと癖があり、ユーザーがexeをクリックした後の初回起動がかなり遅いのです。
ソフトメーカー曰く起動のためにキャッシュをメモリ上にロードするのに時間がかかるとのことだったので、何とかWindows起動時にこのエクセルを完全起動→終了という動作をしてキャッシュをユーザーの意図とは無関係に初めにロードさせたいというのが目的です。
手動で起動→終了では問題なくロードされ、アプリの再起動はさほど時間はかからないのですが、
自分が作ったプログラムではExcelのプロセスが上がってすぐに終了の動作をはじめるため、ロードする間もなく、画面表示的にもExcelの起動してますよってロゴの画面も表示されずにすぐに終了となってしまいます。
ですので、
1.Excelを起動
2.完全に起動したのを確認
3.Excelの終了
というように完全に起動したのを確認するという動作はVBSで可能でしょうか?というご質問でした。
わかりにくくて申し訳ありません。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Microsoft ASP C#からvbsを実行したい 5 2022/11/24 17:31
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- Excel(エクセル) Excel2010 VBAが特定動作で実行出来なくなる 7 2022/12/29 14:26
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- 日本株 SBI証券HYPER SBI 2のエラー 1 2023/01/31 13:38
- 中古パソコン 中古PCを売る時、OS(Windows11)はどんな状態にするのが親切ですか? 4 2022/12/15 17:08
- デスクトップパソコン 「自動修復でPCを修復できませんでした」と表示されPCが起動しないのですが対処法はありますか? 5 2022/05/13 09:16
- その他(クラウドサービス・オンラインストレージ) Onedriveで実現したい事。2台のPC間で。 2 2023/04/10 20:42
- デスクトップパソコン windows7を使っているパソコンでの質問です。先日動作が遅く再起動かけると「windowsを起動 9 2022/06/16 21:31
- Windows 8 QTTabBarが無反応になる 2 2023/04/07 14:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アウトルックが起動しているか...
-
VBAでOutlookを終了させたい Ex...
-
VBSでExcelのUserFormをエクス...
-
64bitで作ったEXEを32bitで起動...
-
VBで実行中のEXEファイルの情報...
-
AppActivateについて
-
VBSで起動したアプリが前面表示...
-
VBで一定時間毎に他のプログ...
-
HTMLタグの中にDLLを埋め込む事...
-
VBSから別のVBS起動するとき変...
-
二重起動禁止にする理由とは
-
Windows上のプログラム。「予め...
-
C#のフォームから起動するブラ...
-
EclipseとTomcat使用時、すぐに...
-
Eclipseでjavascriptが動かない
-
VBAでSeleniumからChromeを起動...
-
iPad) URL Schemeを使ってアプ...
-
MSペイントを画像ファイル名を...
-
WinSCPで画像のように puttyを...
-
exeファイルを実行するとすぐに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アウトルックが起動しているか...
-
WinSCPで画像のように puttyを...
-
VBSから別のVBS起動するとき変...
-
Windows上のプログラム。「予め...
-
VBAでOutlookを終了させたい Ex...
-
VBで実行中のEXEファイルの情報...
-
VBSで起動したアプリが前面表示...
-
Process.Startで起動したアプリ...
-
EXCEL VBAから他アプリケーショ...
-
64bitで作ったEXEを32bitで起動...
-
exeファイルを実行するとすぐに...
-
リムーバブルディスクのフォー...
-
VB6で呼び出し元の情報を取得す...
-
VBAでIEが起動しているか...
-
フォームの最前面が効かない
-
VBAでSeleniumからChromeを起動...
-
エクセル起動時別プロセスで開く
-
VBSでExcelのUserFormをエクス...
-
ACCESS VBAで別のACCESS(mdb)を...
-
別アプリの起動、終了について
おすすめ情報