• 締切済み

指定時間に自動実行

いつもお世話になっております。 早速ですが、 OFFICEXP EXCELでデータを更新するプロシージャを指定時間に実行させたいのですが、どのようにしたら良いのでしょうか。 Ontimeを使用してみたのですがまったく動きません。 Sub Ontime() Object.OnTime earliesttime:=("10:30:00"), procedure:="オートシェイプ28_Click", schedule:=True End Sub 超初心者なのでよろしくお願いします。

みんなの回答

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

#1です。 >コードを入力しただけでは実行されず、 あたりまえでしょう。このコードを実行しなければダメですよ。 自動的に実行されるようにするなら、 Workbook_Open Eventとか、Worksheet_Activate Eventとかに書かなければダメでしょう。

hiron67
質問者

お礼

無事に更新させることができました。 返信ありがとうございます。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

Application.OnTime TimeValue("10:30:00"), "オートシェイプ28_Click" でどうでしょう。

hiron67
質問者

お礼

回答ありがとうございます。 ただ、コードを入力しただけでは実行されず、 オートシェイプにマクロ登録し実行させるとうごきました。 ほかの方法などありましたらお願いします。 結果うまくうごいたので大感謝です。

関連するQ&A

  • エクセルVBAの実行時エラー1004の解決方法

    Private tm As Double Sub Auto_Open() Call 更新 End Sub Sub 更新() Application.Calculate tm = [now()+timevalue("00:00:10")] Application.OnTime tm, "更新" End Sub '===================================================== Sub 更新やめ() Application.OnTime tm, "更新", , False End Sub この様なVBAがあります。 ここで「Sub 更新やめ()」のVBAを何度も実行すると「実行時エラー’1004’:’OnTimeメソッドは失敗しました;’_Application’オブジェクト」と表記されます。 何度も実行しても上記の表示が出ない様にする為のVBAはどの様に改造すれば良いでしょうか?

  • 「一定の時間間隔で5秒毎にマクロを実行する」

    http://okwave.jp/qa/q8690800.html の続きです。ご指摘のとおりコードを改変しました。 startはばっちり動いたのですが、stopが命令を受け付けてくれなくて 「Ontimeメソッドは失敗しました。Applicationオブジェクト」とでます。 何か原因があるのでしょうか。ご指摘よろしくお願いします。 Sub t_start() Call last20txt End Sub Sub t_stop() Application.OnTime earliesttime:=tt, procedure:="last20txt", Schedule:=False End Sub ------------------------------------------- 下記Call先です。 Sub last20txt() Dim Srg As Range Dim kensu As Long Set Srg = Cells(1, 1) Workbooks.Open ("C:***.csv") kensu = Cells(Rows.Count, 1).End(xlUp).Row Range(Cells(kensu - 19, 1), Cells(kensu, 4)).Copy Srg ActiveWorkbook.Close Dim wt As Date Dim tt As Date tn = Now() tt = tn + TimeValue("00:00:05") '5秒後 wt = TimeValue("00:00:02") 'インターバル2秒 Application.OnTime tt, "last20txt", wt End Sub

  • 指定した時刻になるとセルに色がつくようにしたい

    初心者です。エクセルのVBAで設定した時刻になったらセルに色がつくようにしたいです。 例えば、17:00時にA1セル、18:00にA2セルに色を自動でつくようにしたいと思っています。 OnTimeを使ったらよいと思っていろいろ試しましたが、設定した時刻になってもなにも起こりません。 標準モジュールに以下の内容を記述して、パソコンの時計を変更して確認しています。 できたらクリックしないでファイルオープンしてなにもせずに設定時刻に実行されるようにしたいです。 最初の3秒でB1に現在の時間を取得。 セルA1とA2をクリアしてから設定時間に色をつけるようにしたつもりです。 下記が記述内容です。 Sub 指定時間にマクロを開始() Dim stime As Date Range("A1") = "" Range("A2") = "" Range("B1").Select stime = Now + TimeValue("00:00:03") Application.OnTime TimeValue(stime), "マクロ実行内容", TimeValue("00:05:00") End Sub Sub 時刻の設定1() Application.OnTime EarliestTime:=TimeValue("17:00:00"), Procedure:="Test" End Sub Sub Procedure() Range("A1").Interior.ColorIndex = 8 End Sub Sub 時刻の設定2() Application.OnTime EarliestTime:=TimeValue("18:00:00"), Procedure:="Test" End Sub Sub Procedure2() Range("A2").Interior.ColorIndex = 9 End Sub 実行マクロは有効にしています。 ご教授よろしくお願いします。

  • EXCELでの変数によるMacro自動実行について

    すいませんが教えてください・・・・・・ EXCELシートにツールボックスより、コマンドボタンを2つ配置しました。 (AUTOMATICはPublic変数で標準モジュールで定義しています Dim AUTOMATIC As Boolean ) ------------------------------------------------------------------ CommandButton_1 : Private Sub CommandButton1_Click() AUTOMATIC = True End Sub CommandButton_2 : Private Sub CommandButton2_Click() AUTOMATIC = False End Sub ------------------------------------------------------------------ あとはEXCELを起動中に、AUTOMATICが Trueでセル(例えばA2のセル)の 値が100のときには Macroを起動したいのですが、どこにどう記述したら いいか教えて欲しいのです。 ------------------------------------------------------------------ CommandButton_1 : Private Sub CommandButton1_Click() if Cells(2,1) = 100 then 'A2はCells(2,1) Macro実行 end if End Sub とAUTOMATICを使用せずに記述しても、毎回CommandButton_1をクリックしな ければMacroが起動することができないので煮詰まってしまいました。 (一度CommandButton_1をクリックしておくとあとはA2セルを監視するだけ でMacroを起動させたい) すいませんがわかる方、教えていただけないでしょうか よろしくお願いします。

  • OnTime 使用時のプロシージャへの引数の与え方、その記述方法を教えて下さい。

    初心者ですが、宜しくお願いします。 Application.OnTime EarliestTime:=TimeValue(time_ptn), Procedure:="my_func" 上記コードの、末尾のプロシージャの指定において、 Dim prm1 As String, prm2 As Long Function my_func(prm1,prm2)    ~内容~ End Function または、 Sub my_func(prm1,prm2)    ~内容~ End Sub というプロシージャを指定したいのですが、 末尾の書き方が分からず困っております。 「Procedure:="my_func(prm1,prm2)"」 「Procedure:= my_func(prm1,prm2)」 のようにやっても、うまくいきません。 正しい書き方をどなたか教えて下さい。

  • マクロで分岐をさせる方法

    下記の記録マクロでWith→End With 間にIFで分岐を試みたのですが エラーになります。どうすれば出来るのか伝授をお願いします。 マクロは初心者です。 Dim hensuh(2) As Integer Dim dekiru As Long Dim kinek As Long Dim uineu As Long Dim myTime As Date Dim flg As Boolean Sub OnTimeSamp1() Application.OnTime EarliestTime:=TimeValue("09:00:00"), Procedure:="Ontime_Set" '記録開始 Application.OnTime EarliestTime:=TimeValue("11:00:00"), Procedure:="Ontime_Reset" '記録終了 End Sub Sub Ontime_Set() 'トグルになっている If flg = False Then flg = True myTime = Now + TimeSerial(0, 0, 1) ElseIf flg = True Then flg = False Else Exit Sub End If If Range("A1").Value = "" Then Range("A1").Value = Format(Now, "hh:mm:ss") '時間記録(スタート) End If Application.OnTime EarliestTime:=myTime, _ Procedure:="my_Procedure", Schedule:=flg If flg = False Then myTime = 0 End If End Sub Sub my_Procedure() Worksheets("kirokuyou").Activate 'ワークシートをアクティブにする。(記録中別のワークシートを開けた場合そこに記録されてしまうのを防ぐ) With Range("A65536").End(xlUp).Offset(1) .Value = Format(Now, "yyyy:mm:dd:hh:mm:ss") '時間記録 .Offset(, 1).Value = Range("S3").Value 'S3 の値 .Offset(, 2).Value = Range("T3").Value 'T3 の値 .Offset(, 3).Value = Range("U3").Value 'U3 の値 .Offset(, 4).Value = Range("V3").Value 'V3 の値 dekiru = Range("V3").Value Range("V6").Value = dekiru kinek = Range("T22").Value Range("T18").Value = kinek uineu = Range("U22").Value Range("U18").Value = uineu 'IF S17 >= 120 Then 'hensuh(0) = Range("S17").Value ←変数に代入後、分岐させたいのですがエラーになる 'Elseif S17 >= 110 Then 'hensuh(1) = Range("S17").Value ←変数に代入後、分岐させたいのですがエラーになる 'Elseif S17 >= 100 Then 'hensuh(2) = Range("S17").Value ←変数に代入後、分岐させたいのですがエラーになる 'End If flg = False myTime = 0 End With Call Ontime_Set End Sub Sub Ontime_Reset() 'タイマーリセット On Error Resume Next Application.OnTime EarliestTime:=myTime, _ Procedure:="my_Procedure", Schedule:=False If Err.Number > 0 Then MsgBox "OnTime設定はされていません。", 64 Err.Clear flg = False Else MsgBox myTime & "の設定は解除されました。", 64 flg = False myTime = Empty End If End Sub

  • 「一定の時間間隔で5秒毎にMacro1を実行する」

    「一定の時間間隔で5秒毎にMacro1を実行する」 一応startマクロ、stopマクロは作成してみたのですが、 下記stopコマンド実行しても止まらなかったような気がします。 ここから改変するとしたらどうですか? Public timestop As Boolean Sub test() Dim tt As Double Dim wt As Double tt = Now + TimeValue("00:00:05") '5秒後 wt = TimeValue("00:00:02") 'インターバル2秒 Application.OnTime tt, "Macro1", wt If (timestop = False) Then Time = Timer Application.OnTime earliesttime:=(Now + TimeValue("00:00:01")), procedure:="test" End If End Sub ---------------------------------------- ここからstart,stopマクロ Sub t_start() timestop = False Call test End Sub Sub t_stop() timestop = True End Sub

  • VB2010 で指定時間にプロシジャ起動するには?

    検索の仕方なのか、判らないので教えてください。 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を取得したりと、いろいろ使い道があって結構つかっていますので、この「指定した時間に、処理○○を記述したプロシージャーを実行して」という処理ができないとかなり困ります。

  • AccessVBAで実行時間を指定するには

    よろしくお願いします。 VBAで指定した時間に処理(関数)を呼び出すという事がしたくて色々調べていたらApplication.Ontime というやつでなんとかできそうだとメドが立った ・・・つもりでいたのですが、どうやらこれはExcelの機能のようでした。 参照設定でエクセルのオブジェクトライブラリをチェックしたらAccessVBAで  >Excel.Application.Ontime 待ち時間, コマンドA と記述することでひとまず実行予約的な事まではできたのですが、 指定時間になると「コマンドAが見つかりません」 というエラーメッセージが出てしまいます。 おそらくエクセルのマクロを実行しようとして「見つからない」と言われているのでは無いかと考えています。 長くなりましたが質問は、上記のようなコードで、Accessのマクロ(関数)を呼び出すにはどうすれば良いのでしょうか? よろしくお願いします。 上記の前提が勘違いの場合は併せてご指摘頂ければ幸いです。

  • マクロ subプロシージャーは指定できない?

    accessのマクロの アクション:プロシージャの実行 は、 subプロシージャーは指定できないのでしょうか? 標準モジュールに Sub test1() MsgBox "プロシージャーの実行のテストです" End Sub Function test2() MsgBox "プロシージャーの実行のテストです" End Function と作り、 マクロのプロシージャの実行で プロシージャ名をtest2()にすると、うまく表示されますが、 test1()だと、失敗します。 subプロシージャーをマクロで呼び出す方法を教えてください。