【EXCEL】【VBA】Application.OnTimeを利用し指定時間経過後にサブプロセスを実行する例

久々のExcel VBA関連

Application.OnTimeを使うと、指定時間経過後にサブプロセス(SubProc)を実行できる。

また、Mainで Application.OnTime は結果を待つことなく MsgBox処理が行われる。

つまりうまく使えば、Excel上でタイマーイベント駆動による並列処理っぽい動き(実際は並列にはならない)の真似ができる。

そして

この応用で、マルチプロセスを実現されているサイトを発見した。これは面白い!

クラスとイベントとマルチプロセス並列処理|VBA技術解説 (excel-ubara.com)

Excelブック単体でExcelVBAを疑似マルチスレッド化してみる – えくせるちゅんちゅん (excel-chunchun.com)

以前、このブログでも、マルチプロセスの例を取り上げて、Excel hero のサンプルを見たことがあったけど、そのつくりは、VBA + VBScript の組み合わせになっていて、VBScriptを作り出すロジックのメンテは大変だなー、とそのままにしていた。

今回、Application.OnTimeをうまく使うことで、並列処理がやりやすくなる気がする。

余裕ができたら、Application.OnTime + Excel Hero のサンプルを乗せ換えてみようと思う。

世の中すごい人がいるもんだ。

マルチ処理したいなー ー> そののためにCreatethread/Createprocess等で苦労するより、VBAでできる範囲で頑張る感じが、無理が少なくて良い感じがする。 ー> え! Application.OnTimeと自分自身を呼び出せば、マルチ処理できるの! ワクワク(<=今ここ)

コメント

タイトルとURLをコピーしました