検索の仕方なのか、判らないので教えてください。
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も見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
モテ期を経験した方いらっしゃいますか?
一生に一度はモテ期があるといいますが、みなさんどうですか? いまがそう! という方も、「思い返せばこの頃だったなぁ」という方も、よかったら教えて下さい。
-
コーピングについて教えてください
皆さんはストレスを感じたとき、どのような方法や手段、テクニックで対処していますか?
-
【お題】斜め上を行くスキー場にありがちなこと
運営も客も一流を通り越して斜め上を行くスキー場にありがちなことを教えて下さい。
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
「読み取りと実行」と「読み取...
-
バッチファイルの内容を表示さ...
-
[teraterm] waitコマンドで停止...
-
バッチファイルが不正終了して...
-
exeファイルを実行するとコマン...
-
メッセージを他のPCに出したい
-
VBscriptが起動しない?
-
Excel(エクセル) VBA プロシー...
-
WSH.Run の処理内容をテキスト...
-
複数のbatファイルを自動実行し...
-
これってパソコンの最適化が完...
-
VB.NETでのDOSコマンドを実行に...
-
Access の VBA 実行中に他の操...
-
エクセル フォルダの画像を画...
-
exeの同時実行について
-
VBAでバッチファイルを1つ実行...
-
Excel VBAで複数のバッチファイ...
-
Excel VBA ステップインが途中...
-
Windows System32 Security Hea...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
[teraterm] waitコマンドで停止...
-
exeファイルを実行するとコマン...
-
「読み取りと実行」と「読み取...
-
これってパソコンの最適化が完...
-
バッチファイルの内容を表示さ...
-
Windows System32 Security Hea...
-
複数のbatファイルを自動実行し...
-
VBscriptが起動しない?
-
pythonスクリプトを管理者権限...
-
エクセル フォルダの画像を画...
-
【VB.NET】exeを実行すると「発...
-
VB.NETでのDOSコマンドを実行に...
-
ネットワーク名が見つかりません
-
Excel(エクセル) VBA プロシー...
-
バッチファイルが不正終了して...
-
Excel VBA ステップインが途中...
-
NASに移したBATファイルからセ...
-
VBScriptでコマンドプロンプト...
-
VScodeのエラー解決法 Pythonの...
おすすめ情報