Microsoft Access ClubAccess超初心者対象ForumAccess初級者対象ForumAccess初・中級者対象ForumAccess VBA Tips ForumDAO、ADO、SQL Forum

     

No65656.複数マクロの定期繰り返し実行について

タイトル複数マクロの定期繰り返し実行について
記事No: 65656
投稿日: 2005/12/02(Fri) 18:43
投稿者: トモ
OS:XP
Access Version:2002

複数マクロの定期繰り返し実行について教えてください。
例えば、マクロ1・マクロ2・マクロ3・マクロ4があるとします。
マクロ1は警告音を鳴らすアクションのみのマクロで、

マクロ2は値の代入アクションで、
アイテム [Forms]![実行フォーム].[TimerInterval]
式 60000

マクロ3も値の代入アクションで、
アイテム [Forms]![実行フォーム].[TimerInterval]
式 0

この状態でフォームにて"開始"ボタンと"終了"ボタンを作成した
"実行フォーム"を作成し、"開始"ボタンにはマクロ2を割り当て、
"終了"ボタンにはマクロ3を割り当て、
"実行フォーム"のフォームの「タイマ時」に「マクロ1」(警告音)を割り当て、
「タイマ間隔」は 0 にして"開始"ボタンをクリックすると1分間隔でマクロ1が実行されて
警告音が鳴るようになりました。

1分間隔で警告音を鳴らすマクロ1を実行させながら、マクロ4を1日に1回(定時)間隔で実行
させたいのですが、どうすればいいでしょうか?
ちなみにマクロ4もマクロ1と同様、終了アクションがあるまで実行し続けたいです。

どうかよろしくお願いします。

タイトルRe: 複数マクロの定期繰り返し実行について
記事No: 65664
投稿日: 2005/12/02(Fri) 21:20
投稿者: まさ7251
> 1分間隔で警告音を鳴らすマクロ1を実行させながら、マクロ4を1日に1回(定時)間隔で実行
> させたいのですが、どうすればいいでしょうか?
> ちなみにマクロ4もマクロ1と同様、終了アクションがあるまで実行し続けたいです。

1日に1回(定時)で動かすのでしたら、
マクロ1を実行した際に、システム時間をチェックし、
定時であれば、実行するような処理を組み込めばいいかと思います。

タイトルRe^2: 複数マクロの定期繰り返し実行について
記事No: 65668
投稿日: 2005/12/02(Fri) 23:29
投稿者: トモ
まさ7251さん、ご回答ありがとうございます。

マクロ1が1分間隔で自動実行しながら、設定した時刻になったら
マクロ4を実行させるということでしょうか>
イメージなんとなく理解できるのですが、組み込み方がよく分かりません。
もう少しヒントをください。
よろしくお願いします。

> > 1分間隔で警告音を鳴らすマクロ1を実行させながら、マクロ4を1日に1回(定時)間隔で実行
> > させたいのですが、どうすればいいでしょうか?
> > ちなみにマクロ4もマクロ1と同様、終了アクションがあるまで実行し続けたいです。
>
> 1日に1回(定時)で動かすのでしたら、
> マクロ1を実行した際に、システム時間をチェックし、
> 定時であれば、実行するような処理を組み込めばいいかと思います。

タイトルRe^3: 複数マクロの定期繰り返し実行について
記事No: 65669
投稿日: 2005/12/02(Fri) 23:49
投稿者: まさ7251
> マクロ1が1分間隔で自動実行しながら、設定した時刻になったら
> マクロ4を実行させるということでしょうか>
> イメージなんとなく理解できるのですが、組み込み方がよく分かりません。
> もう少しヒントをください。
> よろしくお願いします。

時間を求めるのは、
Time関数とか、
NowとMinute関数を組み合わせるとか。
その周辺の時間関係の関数を組み合わせれば出来るかと思います。

あとは、If文で一致するかどうかを判断すればいいかと思います。

タイトルRe^4: 複数マクロの定期繰り返し実行について
記事No: 65671
投稿日: 2005/12/03(Sat) 00:42
投稿者: みるく
ずっとAccessを立ち上げたまんまなんですか?

タイトルRe^5: 複数マクロの定期繰り返し実行について
記事No: 65675
投稿日: 2005/12/03(Sat) 02:42
投稿者: トモ
> ずっとAccessを立ち上げたまんまなんですか?

はい、ずっと立ち上げたままです。
どうにもAccess初心者なもので、VBA使った組み込み方法が
よくわかりません。

タイトルRe^4: 複数マクロの定期繰り返し実行について
記事No: 65676
投稿日: 2005/12/03(Sat) 02:49
投稿者: トモ
>
> 時間を求めるのは、
> Time関数とか、
> NowとMinute関数を組み合わせるとか。
> その周辺の時間関係の関数を組み合わせれば出来るかと思います。
>
> あとは、If文で一致するかどうかを判断すればいいかと思います。

現在は"実行フォーム"の"開始"ボタンと"終了"ボタンで1分間隔で
警告音を鳴らしているのですが、別フォームを新規に作った方法でも可です。

タイトルRe^5: 複数マクロの定期繰り返し実行について
記事No: 65678
投稿日: 2005/12/03(Sat) 03:09
投稿者: みるく
特に試してませんが、

マクロ1の続きに

条件
Format(Now(), "hh:mm") = "11:00"

アクション
マクロの実行

引数
マクロ4

とか?



(あまり条件をシビアにすると成立しなくなるかも。)

タイトルRe^6: 複数マクロの定期繰り返し実行について
記事No: 65687
投稿日: 2005/12/03(Sat) 07:51
投稿者: トモ
> 特に試してませんが、
>
> マクロ1の続きに
>
> 条件
> Format(Now(), "hh:mm") = "11:00"
>
> アクション
> マクロの実行
>
> 引数
> マクロ4
>
> とか?
>
>
>
> (あまり条件をシビアにすると成立しなくなるかも。)

ありがとうございます。
> Format(Now(), "hh:mm") = "11:00"

↑の条件は毎日11時なると実行するという意味でいいですか?
こちらもまだ試してませんが、一度試してみます。

タイトルRe^7: 複数マクロの定期繰り返し実行について
記事No: 65689
投稿日: 2005/12/03(Sat) 09:29
投稿者: hatena
> ありがとうございます。
> > Format(Now(), "hh:mm") = "11:00"
>
> ↑の条件は毎日11時なると実行するという意味でいいですか?

そうなります。
ただ、タイマ時イベントもそれほど正確な間隔で発生するわけでなく、
別のプロセスで重い処理をしているときなどは、ずれることがあるので、
ピンポイントでチェックすると実行されない可能性もあります。
例えば、10:59:59 にイベントが発生して、次に
11:00:59 にイベント発生するはずですが、そのとき重い処理が
されていて、発生が1秒遅れて 11:01:00 になると実行されない
というようなこともあり得ます。

条件に幅を持たせればいいですが、そうすると複数回実行されてしまう
ことになりますので、フラグをたてて一回のみ実行するようにする、
というテクニックを使います。

一例を挙げると、
タイマ時イベントを設定しているフォームに
テキストボックスを配置します。
フォーム名 実行フォーム
テキストボックス名 実行結果
とします。

マクロ1の続きに

条件 Hour(Now()) = 11 And Left([Forms]![実行フォーム]![実行結果],5) <> Format(Now(),"mm/dd")
アクション 値の代入
 アイテム [Forms]![実行フォーム]![実行結果]
 式    Format(Date,"mm/dd hh:nn") & "に処理開始"

条件 ...
アクション マクロの実行
 マクロ名 マクロ4

[次頁]

 

ページの先頭へ 前ページへ戻る