検索の仕方なのか、判らないので教えてください。
ExcelのVBAではApplication.OnTime メソッドがあり、
Application.OnTime TimeValue("17:00:00"), "test01"
とすれば、17時ちょうどにtest01というプロシージャが実行されます。
フォームを作って
Application.OnTime UserForm1.TextBox1.Value, "test01"
のようにすれば、TextBox1に時間指定して、その指定時間にtest01を起動する事も可能で、業務用アプリとして実際に使用しています。
では、これをVisual Basic 2010で同じように実行するにはどうしたら可能でしょうか?
googleで調べても、時計のように、一定時間(1秒ごと)にラベルの内容を書き換え表示するようなサンプルは見つかるのですが、指定時間に、指定の処理を実行する というようなサンプルは見つかりませんでした。
指定時間にFTPにファイルをアップしたり、指定時間にWEBブラウザからHTMLを取得したりと、いろいろ使い道があって結構つかっていますので、この「指定した時間に、処理○○を記述したプロシージャーを実行して」という処理ができないとかなり困ります。
No.3ベストアンサー
- 回答日時:
No.1です。
お礼に書かれているような感じでよいかと思います。
Timerというと、それが時間を監視しているように思われがちですが、今回の分でいうと、指定したインターバル(ミリ秒単位)で、時計を見るのを延々と繰り返しているだけですね。
それに対して、時刻を書いたメモ紙を渡して、「時計を見たときに、この時間だったらこんな風にしてね」とお願いしていると。
複数の異なるタスクがある場合も、メモ紙を増やすだけで良いので、使い勝手はよいと思います。
テストで、
------------------------
Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
Dim thday1 As Date
Dim thday2 As Date
thday2 = Now()
Me.Label2.Text = thday2
thday1 = Me.TextBox1.Text
If thday1 > thday2 Then
Me.Label2.Text = "現在時刻 " & thday2
Else
Me.Label2.Text = "過ぎました"
End If
End Sub
------------------------
と組んだら、TextBox1に入れた時刻を過ぎた所で、「過ぎました」に変わりました。
ここに処理内容を記述すれば、なんとかなりそうです。
ありがとうございました。
No.4
- 回答日時:
> 1日1回ならタスクスケジューラでもOKかもしれませんが、8時間だったり、別のプログラムでは12時間毎だったりと、
> 指定の時間に作業をするのに便利だったもので、Application.OnTime はけっこう使ってしまいました。
>
> 何か代替方法があるといいのですが…
代替方法も何も、そのものずばり一定時間おきに繰り返す設定もできるのですが。
http://www.atmarkit.co.jp/fwin2k/win2ktips/1332r …
ありがとうございます。
タスクスケジューラーは、まさにリンク先に書かれているとおり
「1日1回とか、毎週1回といったタイミングで、指定・登録したプログラムを実行するだけ」
と思っていました。
時間や分で指定する抜け道があったとは…
今回はタイマーでなんとかなりそうですが、他に使い道があったら使ってみます。
No.2
- 回答日時:
> 指定時間にFTPにファイルをアップしたり、指定時間にWEBブラウザからHTMLを取得したり
それはプログラムでどうこうするんじゃなくってタスクスケジューラを使った方がいいんじゃないかなぁ。
http://technet.microsoft.com/ja-jp/library/cc721 …
これを使えば、特定の時間に特定のプログラムを起動することができるから、「FTPにファイルをアップ」とか「WEBブラウザからHTMLを取得」とかだけするプログラムなりスクリプトなりをつくって、スケジューラに「毎日××時に○○を実行」という風に設定すればお望みのことはできますよ。
ありがとうございます。
言葉が足らなかったようですみません。
現在のVBAでは、フォームが起動する時に、UserForm_Initializeで、TextBox1にNow()を取り込んでいるので、
----------------------------
Sub test1()
Dim adtim As Variant
''次回動作時間を決定
adtim = DateAdd("h", 8, TextBox1.Value)
Application.OnTime adtim, "test1"
TextBox1.Value = adtim
~プログラム作動(例)HTML取得~
End Sub
----------------------------
のような記述になっていて、現在の時間に8時間を加えた時間が次回起動時間となり、8時間後に同じ処理が起動します。
以下、強制断するまで8時間毎にこのtest1 が自動で繰り返される事になります。
1日1回ならタスクスケジューラでもOKかもしれませんが、8時間だったり、別のプログラムでは12時間毎だったりと、指定の時間に作業をするのに便利だったもので、Application.OnTime はけっこう使ってしまいました。
何か代替方法があるといいのですが…
No.1
- 回答日時:
現在はVBをインストールしていないので、チェックできませんが、タイマーで、一定時間ごとに、指定の時間の範囲内に入っているかどうかを判別、入っているならばプロシージャを実行するというのはどうでしょうか?
注意しなくてはいけないのは、指定の時間の「範囲」の設定と、一度実行されたならば、次は無視するようにしないように工夫する必要がある点だと思います。
タイマーが1秒設定で、範囲は指定時間±1秒とした場合、そのあたりをやっていないと、2回実行されるリスクがあります。
ありがとうございます。
例えば6時間毎にプログラムを起動したい場合は、AddHours で6時間後の時間を指定して、タイマーでその時間の範囲に入っているかどうかをチェック。
範囲に入っていたら、プロシージャを起動し、時間を6時間後にずらす…
という処理の繰り返しという事でしょうか?
試験的にタイマーをつくってテストしてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel-VBAの「しばらくお待ちください」のダイアログが自動的に閉じない 2 2023/05/24 15:31
- Visual Basic(VBA) シフト表のコマで「ブロック」されている前の時間の「出」を同一列の「休」と入れ替えたいがふぇきません。 2 2023/08/02 18:49
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- フリーソフト タスクソフト? 1 2023/01/14 07:52
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/17 11:59
- Visual Basic(VBA) エクセル マクロ 指定日の指定時刻にプロシージャを実行 4 2022/04/17 16:44
- システム ホームページの仕組みについて 3 2022/08/16 14:33
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VB.NETでファイル名順にファイルを読む方法
Visual Basic(VBA)
-
文字列の後ろから必要分だけ削除したい。
Visual Basic(VBA)
-
日時や時刻を指定し、その時間にメッセージを表示させる方法、、、
Visual Basic(VBA)
-
-
4
VB.NETでフォーム上にExcelのような表を表示する方法
Visual Basic(VBA)
-
5
VB .netにて現在時刻+1時間後の時刻を取得したい
Visual Basic(VBA)
-
6
指定した時刻に実行するプログラムを作りたい
Visual Basic(VBA)
-
7
VB.net 任意の例外を発生させるには・・・
Visual Basic(VBA)
-
8
一定時間ごとの実行
Visual Basic(VBA)
-
9
VB.NET2005 TextBox 高さ(Height) 変更
Visual Basic(VBA)
-
10
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
11
アウトルックが起動しているかどうかを取得するには?
Visual Basic(VBA)
-
12
すでにファイルが開かれている時のエラー回避
Visual Basic(VBA)
-
13
VB.NET 自プログラムのプロセス終了のイベント
Visual Basic(VBA)
-
14
バッチファイルで、iniファイルの内容を一部書き換える方法を教えてください。
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
exeファイルを実行するとコマン...
-
「読み取りと実行」と「読み取...
-
VB.NETでのDOSコマンドを実行に...
-
バッチで実行するVBScriptから...
-
【VB.NET】exeを実行すると「発...
-
複数のbatファイルを自動実行し...
-
Excel(エクセル) VBA プロシー...
-
VBscriptが起動しない?
-
Excelのセルの内容をコマンドプ...
-
[VBScript]ファイルの削除
-
Excel VBA ステップインが途中...
-
HP PROBOOK 450G でbat ファイ...
-
バッチファイルでクリップボー...
-
OCXが読み込めない
-
メッセージを他のPCに出したい
-
vbscriptを用いて他のVBSファイ...
-
pythonスクリプトを管理者権限...
-
バッチファイルの内容を表示さ...
-
ネットワーク名が見つかりません
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
「読み取りと実行」と「読み取...
-
exeファイルを実行するとコマン...
-
VBscriptが起動しない?
-
バッチファイルの内容を表示さ...
-
Excel VBA ステップインが途中...
-
エクセル フォルダの画像を画...
-
バッチファイルが不正終了して...
-
PDFファイルを開き、印刷し、閉...
-
複数のbatファイルを自動実行し...
-
[teraterm] waitコマンドで停止...
-
VBScriptでコマンドプロンプト...
-
ネットワーク名が見つかりません
-
Excel(エクセル) VBA プロシー...
-
Access の VBA 実行中に他の操...
-
VB.NETでのDOSコマンドを実行に...
-
Excelのセルの内容をコマンドプ...
-
VBS実行時にコマンドプロンプト...
-
VBA 既に開いているBookに継続...
-
メッセージを他のPCに出したい
おすすめ情報