OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

エクセルVBAでタイマーコントロールは使えますか

  • すぐに回答を!
  • 質問No.226844
  • 閲覧数5831
  • ありがとう数2
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 20% (1/5)

エクセルVBAでタイマーコントロールは使えますか。

エクセルVBAで、ある時刻になったらマクロを実行させたいと思っています。
無限ループの中にTIME関数で時刻を呼び出し、それをIF文で判定して、
一定時刻にマクロを実行させるものは作りましたが、CPU負荷が高く、24時間
連続で動作させることに不安を感じています。

この他に、VBのタイマーコントロールのような機能を持つオブジェクトや
便利機能等があったら教えていただけませんか。
(一応、VBで時刻管理をするプログラムを作ってそこからエクセルVBAを呼
び出す方法やタスクスケジューラでエクセルVBAを呼び出す方法、ATコマンド
等も考えていますが、可能ならエクセルVBAで閉じて処理をしたい)。

尚、私はWindowsMe+エクセル2000でVBAを作成しています。
実際にVBAを動かすのは、WinsowNT4.0サーバー+エクセル2000を予定してい
ます。
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.4
レベル9

ベストアンサー率 69% (51/73)

考え方としてですが
ループとIFでのチェックではなく、

毎日一回、指定時刻に実行なら

1.初回は開始時に、現在時刻から逆算して
開始時間までの秒数を設定

2.次回からは、開始時刻がきた時、起動と同時に
次の開始時刻を計算してセット
処理したらwaitして次回を待つ。

という形にしてループとIFでの時刻監視を
一切やめてしまうことをおすすめします。

#1さんのものでも同じだと思いますが
書かれたコードを単独で実行した時には
負荷はそれほどではないと思います。
OnTimeメソッドのループは不要だと思います。
開始時刻をセット済みなので。

時刻をセットして、監視の処理(ループ)
をはずす、という処理へ変更できませんか。

質問の内容と違っていましたらお手数ですが
質問ください。
補足コメント
kirokiro

お礼率 20% (1/5)

kenken0001さん、ありがとうございます。

kenken0001さんのおっしゃることは、
Dim i as Integer
for i=1 to 365
  ...           ’次回実施時刻の計算
  ~OnTime~ 又は~Wait~ ’処理の実行
  ...
next

という意味でしょうか。これなら、1年間は動き続けますね。この考え方は
思いつきませんでした。

それとも、~OnTime~ 又は~Wait~は、時刻設定をすると、ループでまわ
さなくても何度でもステートメントを動作するのでしょうか。

もしまたここをご覧になって、私の解釈に間違いがあったら、教えていただ
けませんでしょうか。

それから、やはりVBAでタイマーコントロールは使えないのでしょうか。
投稿日時 - 2002-03-01 12:44:51
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.1
レベル9

ベストアンサー率 30% (14/46)

下記は11時22分33秒に『時間です』と表示するモジュールです。 こういう意味でよろしいのですか? Sub DUMMY() 指定時刻 = TimeValue("11:22:33") Application.OnTime TimeValue(指定時刻), "DUMMY_MODULE" End Sub Sub DUMMY_MODU ...続きを読む
下記は11時22分33秒に『時間です』と表示するモジュールです。
こういう意味でよろしいのですか?

Sub DUMMY()
指定時刻 = TimeValue("11:22:33")
Application.OnTime TimeValue(指定時刻), "DUMMY_MODULE"
End Sub


Sub DUMMY_MODULE()
MsgBox "時間です"
End Sub
補足コメント
kirokiro

お礼率 20% (1/5)

takao_kwさん、ご回答ありがとうございます。

エクセルVBAのOnTimeメソッドも試してみましたが、
これを実行すると、実行部分(プロシジャ)を実行するまで、
待機時間中はCPUがフル稼働します。

また、毎日一定時刻に決まったプロシジャを実行しようとすると、
OnTimeメソッドをループでまわす必要があります。本当は、VBの
タイマーコントロールを使ってこの処理をしたかったのですが、
エクセルVBAにタイマーコントロールが見当たらなかったので、
ここで私は無限ループを使ったのですが、ここでもCPUがフル稼働
してしまいます。

このプログラムは24時間稼動のサーバーで実行させて、一定
時刻にデータベースからデータを抽出してデータ処理をさせる
もので、サーバーは他のサービスも提供しているので、CPU負荷
をさげてVBAを実行させたいのです。他に手はありませんでしょうか。
投稿日時 - 2002-03-01 08:11:29

  • 回答No.2
レベル9

ベストアンサー率 30% (14/46)

申し訳ありません。 私には、これ以上のことはわかりません。 お役に立てなくてごめんなさい。
申し訳ありません。
私には、これ以上のことはわかりません。
お役に立てなくてごめんなさい。
  • 回答No.3
レベル9

ベストアンサー率 69% (51/73)

下のものでも結果は同じでしょうか。 待ち時間 = InputBox("待ち時間(秒)", "題名", "5") 開始 = TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 待ち時間) Application.Wait 開始 Nowで時刻を取得、開始時刻を秒単位で算定 で ...続きを読む
下のものでも結果は同じでしょうか。

待ち時間 = InputBox("待ち時間(秒)", "題名", "5")
開始 = TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 待ち時間)
Application.Wait 開始

Nowで時刻を取得、開始時刻を秒単位で算定
で変更して使えませんか。
  • 回答No.5
レベル9

ベストアンサー率 69% (51/73)

補足に書いていただいたものは その通りです。 365だと1年しか動きませんので カウンタiをリセットして いつまでもループする方が良いのではないでしょうか。 for i=1 to 2   ’次回実施時刻の計算・セット   ~OnTime~ 又は~Wait~ ’処理の実行   ... i=0 next 予定では、次回まではウェイト状態で 待っていて時間が来るとそ ...続きを読む
補足に書いていただいたものは
その通りです。

365だと1年しか動きませんので
カウンタiをリセットして
いつまでもループする方が良いのではないでしょうか。

for i=1 to 2
  ’次回実施時刻の計算・セット
  ~OnTime~ 又は~Wait~ ’処理の実行
  ...
i=0
next

予定では、次回まではウェイト状態で
待っていて時間が来るとその度に動くと思います。



VBの知識が無いのでタイマーコントロールが
分かりません。

Private Sub Timer1_Timer()
Label1.Caption = Time
End Sub

VBではこういう書き方があるようですが

個人的な理解ですが
Excelは、オブジェクトである
シートやフォームに対して
イベントを設定する考え方なので
タイマーというものが
無い(今は)のではないかと思います。

シートを開いた時や
マクロがキックされた時など
実体のあるものだけで
時間を扱わない(扱えない)
のでしょうか??

便利そうな機能なので勉強になりました。
将来VBをやる時に使ってみます。

Excel97なので以降のバージョンでは
あるのかもしれませんし
わたしが知らないだけかもしれません。


不勉強のため、確かなことを書けず
申し訳ありません。
何か分かったら教えて下さい。

がんばって下さい。
ではでは。
お礼コメント
kirokiro

お礼率 20% (1/5)

takao_kwさん、kenken0001さん、ありがとうございました。

勉強になりました。

始めは、無限ループの中でIF文をつかって時刻判定をしていたので、
グルグルまわってしまい、CPUパワーをフルに使っていたようです。
ということで、~OnTime~ 又は~Wait~構文使用時の待ち時間中に
どの位CPUパワーを使うかどうかは未確認ですが、皆さんから教えて
いただいたことを解決の一方法として、検討してみます。
投稿日時 - 2002-03-01 15:14:47
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ