検索の仕方なのか、判らないので教えてください。
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
都道府県穴埋めゲーム
都道府県の名前を1人1つずつ投稿してください。全ての都道府県が出たら締め切ります!
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
VB.NETでフォーム上にExcelのような表を表示する方法
Visual Basic(VBA)
-
指定した時刻に実行するプログラムを作りたい
Visual Basic(VBA)
-
一定時間ごとの実行
Visual Basic(VBA)
-
-
4
すでにファイルが開かれている時のエラー回避
Visual Basic(VBA)
-
5
別フォームから戻ったときのイベント
Visual Basic(VBA)
-
6
VBでグローバル変数を宣言するには
Visual Basic(VBA)
-
7
VB.NET 自プログラムのプロセス終了のイベント
Visual Basic(VBA)
-
8
VB.NETで他のプロジェクトで作成したフォームを使う方法
Visual Basic(VBA)
-
9
VB.net2005で1日1回バッチを起動
Visual Basic(VBA)
-
10
Designer.vbは直接コードをいじってはだめ?
Visual Basic(VBA)
-
11
配列を使わずに、変数名を動的にループで回したい
C言語・C++・C#
-
12
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
13
VBで一定時間毎に他のプログラムを起動する方法について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
これってパソコンの最適化が完...
-
exeファイルを実行するとコマン...
-
VBscriptが起動しない?
-
バッチファイルでnslookup
-
シェルからCで作った実行ファイ...
-
バッチファイルの内容を表示さ...
-
ネットワーク名が見つかりません
-
メッセージを他のPCに出したい
-
VBScriptでコマンドプロンプト...
-
COBOLのイニシャライズとバリュ...
-
Excelのセルの内容をコマンドプ...
-
シェルで5分前の時間を取得したい
-
バッチファイルをダブルクリッ...
-
コマンドプロンプトをウインド...
-
vbsファイルをPC起動時に実行...
-
バッチファイル(.bat)へWSH(.ws...
-
Excel(エクセル) VBA プロシー...
-
WSH.Run の処理内容をテキスト...
-
PDFファイルを開き、印刷し、閉...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
exeファイルを実行するとコマン...
-
[teraterm] waitコマンドで停止...
-
「読み取りと実行」と「読み取...
-
これってパソコンの最適化が完...
-
VBscriptが起動しない?
-
ネットワーク名が見つかりません
-
hostファイル
-
バッチファイルの内容を表示さ...
-
エクセル フォルダの画像を画...
-
PDFファイルを開き、印刷し、閉...
-
バッチファイルで以下のような...
-
Excel(エクセル) VBA プロシー...
-
VScodeのエラー解決法 Pythonの...
-
NASに移したBATファイルからセ...
-
pythonスクリプトを管理者権限...
-
Excel VBA ステップインが途中...
-
バッチファイルが不正終了して...
-
16進数の変換処理
-
複数のbatファイルを自動実行し...
おすすめ情報