• ベストアンサー

テキストファイルが登録されたら、マクロを実行する方法

あるフォルダにテキストファイルが登録されたら、それをexcelの特定セルへ読み込み、読み込んだテキストファイルを削除というマクロを作成しました。 これを、連続的に実行させる方法はあるでしょうか? テキストファイルが登録される度に表示を繰り返すという内容です。 コマンドボタンで起動するマクロのトリガを、コマンドボタンを使用しないで、ファイルが登録された時点で実施したいというおもいです。 テキストファイルの名前は常に一定です(FILE.txt)。

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

  • ベストアンサー
  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.2

EXCELでは「ファイルが登録された」というイベントを検知できないと思います ですので、 1.タイマーで一定時間ごとに、そのマクロを実行 2.「FILE.txt」が有れば、そのまま実行 3.ない場合はopen文でエラーが出るので、onerror goto文で回避 てな感じでどうでしょう タイマーについてはこちら↓ http://www.d3.dion.ne.jp/~jkondou/excelvba/K11.htm

3620313
質問者

お礼

回答ありがとうございました。 とても早い回答で助かりました。 タイマで検討したいと思います。

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 >テキストファイルの名前は常に一定です(FILE.txt)。 もう少し周辺事情が明らかなら、もしかしたら違ったものになるかもしれません。 この前、ここのカテゴリだったような気がしますが、RS232C の垂れ流しデータを、一旦、変換ツールに通して、USBから、ActiveX Dll などで、常駐して拾って、それをExcelに流し込んでやる(要イベント型マクロ)で、データを取ってあげればよいという話でした。 私は、最初、新たにイベント(RaiseEvent, Event)で、作り出すことを考えていましたが、#2さんの書き込みを読んでいて、その流入のサイクルにもよりますが、Excel全体としてタイマー(OnTime)は、負担が少ないような気がします。イベントを作っても重くなります。 タイマー(OnTime)は、オプションで、他で命令が先行していた場合は、タイマー(OnTime)の登録した実行を待ってくれますので、数秒との範囲なら、Excelがハングしない限りは、ほぼ確実に処理します。詳しくはヘルプを見ていただければ分かります。 そのデータの流入のサイクルとか、それによっても違ってきますね。

3620313
質問者

お礼

回答ありがとうございました。 とても早い回答で助かりました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

フォルダというオブジェクトは、エクセル固有のオブジェクトではない。従ってエクセルの何処を見てもフォルダのイベントはない。 FSO(VBS)でもフォルダのイベントに当たるものは説明がなく、設けられていないのだろう。 だから既出回答のように短時間間隔に定期的にユーザー側でチェックすることも考えられるが、常時では、処理の関係で使用に耐えられるかな。本来イベントはユーザー側で見張るのでなく、OSが処理する入出力や機器ドライバーからの割り込み処理で知らせてもらうもので、その間はユーザー側のコード的にはプログラムが働いていなくてもよいありがたい仕組みだ。 これはあらゆる事項で必要なユーザーが出てもおかしくないが、複雑化するので、良く使われそうなもの(イベント)に限られている。それを判断するのはMS社の開発者だと思う。 組み込み型ソフトベンダーなども開発しているかもしれない。 http://dotnetdemo.grapecity.com/Demo/inputmanjava/Events.jsp のイベント。この中にはMSのコントロールには無いものがあるかもしれない(詳しくない) APIなどのレベルではもっとイベントを増やすことが可能なのかもしれないが、この質問コーナーの守備範囲ではなかろう。 ーー プログラム上で必要となったときに(あるべきファイルが既に存在するかなど)、チェックをしに行くロジックに出来ないか考えるほか無い。 普通は、瞬時に処理しないといけないものは、フォルダの仕組みなどに頼らない、それ向けの大規模(オンライン的)システムがあるはず。 質問者(VBAでさえ熟練者といえるレベルかな)がウインドウズプログラムの熟練者でなければあきらめることだとおもう。

3620313
質問者

お礼

回答ありがとうございました。 とても早い回答で助かりました。 ちなみに、VBAも応用で使っているレベルなのでもっと勉強したいと思います。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

Excelに常駐処理をやらせるのはお勧めしませんが、やるとしたらループを回してSleep で待つ定周期処理にしてはいかがですか? 例えば10秒周期でフォルダを検索して、ファイルがあれば処理を行うと言った具合です。

3620313
質問者

お礼

回答ありがとうございました。 とても早い回答で助かりました。 タイマで検討したいと思います

関連するQ&A