1分毎にエクセル上でマクロを実行しています。
ソースは以下の様なものです。
※主要部分のマクロ自身はコピーペーストを行う程度の軽い物です。
※同一の秒内で2重実行しない様に実際のマクロは少し付け足してあります。
Sub Macro()
'1分毎に実行
ti = Timer
Do
DoEvents
tm = Time - ti
If Int(tm / 60) * 60 = tm Then
'>>マクロ実行<<
End if
Loop
End Sub
1分毎にマクロを実行する事は出来るのですが以下のことについて教えてください。
1)CPU稼働率がほぼ100%になってしまいます。
ほぼ59秒以上は何もしない常態(空ループ)なのでCPU占有率を低減(30%程度)させたいのですが何か良い方法はありませんか?
2)このマクロを実行中は他のエクセルファイルを開く事が出来ません。
仕事上、他にも編集したいファイルがあるので通常通り2重や3重で開くことは出来ないでしょうか。
ちなみにWindowsXP,Excel2003です。
Loop で待ってはいけません。
onTime を使用するか、単順位 Sleep を使用しましょう。
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub Macro() Do '>>マクロ実行<< Sleep 60 * 1000 '// ミリ秒単位で指定 Loop End Sub
OnTime の使用例は下記をご参考ください。
OnTimeという便利なものがあるのですね。
これですと他作業も出来そうです。
有難う御座います。
なるほど、参考にさせて戴きます。
有難う御座います。
なるほど、参考にさせて戴きます。
有難う御座います。