• ベストアンサー

エクセルマクロ自動更新

マクロを1分おきに自動実行するには どうすればよいでしょうか? ※webクエリの更新時間と連動できるとなおよいです よろしくお願いします

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

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

こんにちは。 Wendy02です。 たぶん、Web クエリとの連動のイベントの説明しても、違う環境で試されたのでは、おそらく実証できないでしょうから、OnTime メソッドで説明しておきます。 Sub ActionSetting()  Dim myTime As Date  myTime = Now()  For i = 0 To 360 '6時間 '1分ごと   Application.OnTime myTime + TimeValue("00:01:00") * i, "Move2RowTo21Row"  Next End Sub Private Sub Move2RowTo21Row() Application.ScreenUpdating = False With Rows(21)   .Insert   Rows(2).Copy Rows(21) End With Application.ScreenUpdating = True End Sub

fsoyu
質問者

お礼

うまくいきました ありがとうございました

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (5)

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

こんばんは。 >記述的には理解できないのでそのまま貼り付けてみましたが、動作はできませんでした。 #2と#3 は、話が続いているのですが、おそらくは、きちんと読んでいないのでしょうね。 とは言っても、Culculate イベントの実体が何かわからないと、ちょっと厳しいかもしれません。 >webクエリの更新時間と連動できるとなおよいです 連動ということで、私はのCulculateイベントを書いたわけで、Webクエリの更新が起動となるわけで、そのまま見ていても動くわけはありません。 でも、実際のマクロは見せられていないですから、話が続きませんね。私のほうの、OnTime イベントは、#4の専門家さんが書いておられますので、そのままにしておきますね。こちらのコードも見直していただければ、それはそれなりに考えますが。

fsoyu
質問者

お礼

お手数おかけしました。 動作させたいマクロ部分は↓のみですが 時間おきにループさせたいので困っています。 Rows("21:21").Select Application.CutCopyMode = False Selection.Insert Shift:=xlDown Rows("2:2").Select Selection.Copy Rows("21:21").Select ActiveSheet.Paste Application.CutCopyMode = False

全文を見る
すると、全ての回答が全文表示されます。
  • toshi_ho
  • ベストアンサー率42% (71/168)
回答No.4

こんばんは。お待たせしました。 こんな例がありました。 どうでしょうか?  Testを実行するとSheet1をアクティブにして、A1:A10に"t.tanaka"を 書き込みます。そして15秒間何もせず、続いてB1:B10に"t.tanaka"を 書き込みます。処理の停止している15秒間は、Excelに対して通常の処理を 行えます。 【マクロ】 Sub Test() Dim i As Integer Sheets("Sheet1").Select For i = 1 To 10 Cells(i,1) = "t.tanaka" Next i Application.OnTime Now + TimeValue("00:00:15"), "WaitTime" End Sub Sub WaitTime() Dim i As Integer For i = 1 To 10 Cells(i,2) = "t.tanaka" Next i End Sub

fsoyu
質問者

お礼

ありがとうございます 部分的に理解できます ここの環境にエクセルが入ってないので 明日会社で動作させて見ます また、ご報告させていただきます。

fsoyu
質問者

補足

マクロ自体は無限に実行したいのです。 ↓で実行しましたがだめでした。 お手数ですが再度方法についてお願いします。 Sub Test() Rows("21:21").Select Application.CutCopyMode = False Selection.Insert Shift:=xlDown Rows("2:2").Select Selection.Copy Rows("21:21").Select ActiveSheet.Paste Application.CutCopyMode = False Do Application.OnTime Now + TimeValue("00:00:05"), "WaitTime" Loop End Sub Sub WaitTime() Rows("21:21").Select Application.CutCopyMode = False Selection.Insert Shift:=xlDown Rows("2:2").Select Selection.Copy Rows("21:21").Select ActiveSheet.Paste Application.CutCopyMode = False End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

追伸: 今、設定して気が付いたことですが、 Worksheet_Calculate() イベントは、Application 全体から影響を受けますから、他のシートを使っているときに、誤動作してしまう可能性があります。その場合、以下のようにしたらどうかと思います。 Dim blnActive As Boolean Private Sub Worksheet_Activate()  blnActive = True End Sub Private Sub Worksheet_Change(ByVal Target As Range)  blnActive = False End Sub Private Sub Worksheet_Calculate()  If blnActive Then  '実行  End If End Sub

fsoyu
質問者

お礼

ありがとうございました 記述的には理解できないのでそのまま貼り付けて みましたが、動作はできませんでした。 すいません、お手数おかけしました。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >マクロを1分おきに自動実行する と >webクエリの更新時間と連動できるとなおよいです とはExcelの場合は、たぶん別ですね。 例えば、Web クエリを更新するには、以下のようになるかと思いますが、Webクエリ側で、バックグラウンドで動かすとか、更新の周期とかは、オフにする必要があると思います。 だから、連動というよりも、QueryTable Refresh に、マクロを取り付けなくてはなりません。そうでないとしたら、以下のように、Caluculate イベントに、マクロを取り付ければよいと思います。 Sub QueryTableRefresh()  On Error Resume Next  ActiveSheet.QueryTables(1).Refresh End Sub Sub ActionSetting()  Dim myTime As Date  myTime = Now()  For i = 1 To 60 '1時間   Application.OnTime myTime + TimeValue("00:01:00") * i, "QueryTableRefresh"  Next End Sub '------------------------------------------------ もしも、Web クエリと連動させるのでしたら、 同じシートで、Web情報に関わらないエリアのセルに、 =Now() と入れて、 Private Sub Worksheet_Calculate()  '実行 End Sub とするのがよいのではないでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • toshi_ho
  • ベストアンサー率42% (71/168)
回答No.1

確かできたはずです。 会社で確認してきます。 少々お待ち下さい。

fsoyu
質問者

お礼

ありがとうございます お待ちしてます

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelマクロにて、タイマーで自動更新は出来るのでしょうか?

    Excelマクロにて、タイマーで自動更新は出来るのでしょうか? Excelマクロの初心者です。 最近関数にて、時間の計算を行うbookを作成しましたが、 下記の様に手動で現時刻欄を更新している状態です。 (これは1カ所ですが、実際には複数箇所を行いたいです。) Sub 残り時間を更新() ' Range("C21").Select '現時刻欄を選択 ActiveCell.FormulaR1C1 = "=NOW()" '使用開始時刻欄に現時刻を再設定 Application.CutCopyMode = False End Sub これを別のマクロにくっつけて、例えば10分おき位に自動で 更新が出来る様な事は出来ますでしょうか? 理想は、セルに自動更新時間が任意に設定でき、その数字の基で タイマーが時間が決まり、実行ボタンでタイマー開始、停止ボタン で実行キャンセルといった、VB上では出来そうな事をExcel上 でも可能でしょうか? 良きアドバイスをいただきたいと思います。 よろしくお願いいたします。

  • エクセル マクロについて。

    エクセルでマクロを組んだブックを3台のPCで共有して、 5分で自動更新しています。 しかしそれぞれのPCで別のアプリを実行しているため、 エクセルが隠れてしまい、変更があった時も見逃して しまいます。 そこで、自動更新ごと又は、一定時間ごとにエクセルの画面を デスクトップの最前面に表示して目につきやすくしたいのです。 マクロ等で対応はできないしょうか?

  • エクセルのマクロについて

    ファイルを開いた時にWebクエリを一括自動更新できるマクロを作りたいのですが、 下記だと「この操作によって[データの更新]コマンドはいったん中止されます。よろしいですか?」となり うまく動作しません。 Private Sub Workbook_Open() Sheets("データ1").Select ActiveWorkbook.RefreshAll ActiveWorkbook.Save End Sub どのように書き換えればよろしいのでしょうか。 教えてください。よろしくお願い致します。

  • ある条件でマクロの実行?

    エクセルの素人です。 あるセルの値がクエリをつかって一定間隔で自動更新されているのですが、その値がある条件を満たしたときに(たとえば10以上になったら)マクロを実行させることは出来るんでしょうか? もしくは、そのセルの値が更新されるたびにマクロを実行させることは可能でしょうか? よろしくお願い致します。

  • エクセルVBAで2つのマクロを同時に動かす

    エクセルVBAで2つのマクロを同時に動かすことはできるでしょうか。できる場合注意点はあるでしょうか。たとえばクエリで5分毎にWebページをダウンロードするプログラムを動かしいる時、別のエクセルVBAプログラムを動かすと、たまたま5分毎のクエリ取得時間に当たると、別エクセルの方にWebページが書かれてしまう場合があります。これを防ぐ方法はあるでしょうか。

  • Excel マクロで自動入力

    ○の右隣に、自動で×が入力されるマクロはどのようにすればいいですか? どこかに置いた図形をクリックしてマクロが実行されるのでも、そのままセルに○を入力したら実行されるのでもいいのです。

  • エクセル マクロについて

    自動マクロで作成したマクロのモジュールを コマンドボタンのコードに貼り付けたのですが 実行できません。 自動マクロからでは実行できるのですが。。。

  • マクロ自動更新設定と普段は動かない設定について

    Const SetTime As Date = #5:00:00 AM# If (Time >= SetTime) And _ (Time <= SetTime + TimeValue("00:01:00")) Then '--実行--' End If このコードをOPENイベントに入れれば自動更新ができると教えてもらったのですが・・・ まず、 このコードを入れる箇所の、OPENイベントって  どこ部分の事でしょうか? 更に、仮にこのコードを入れれた場合、 ・5時にエクセルが起動する       ↓ ・エクセル内のマクロが自動で起動する       ↓      OK(^^) でも・・・ マクロが動くのは、5時の自動更新だけでいいので、通常エクセルを開いた状態ではマクロは自動に働かなくもいいです。このようコード記述を教えて下さい。 この説明で分かるでしょうか?

  • ACCESSのマクロに関しまして

    お願いします。 ACCESS97で追加クエリを作成し、その後自動起動にしようと思い、マクロで追加クエリを項目に入れマクロを作りました。 マクロを作成する際に、モジュールでレコード追加するテーブルを一度削除しようと思い、「DELETE文」でモジュールを作成し、マクロの追加クエリの前に「プロシージャの実行」でモジュールのプロシージャを実行するようマクロに記述しました。 <マクロ内容> (1)「プロシージャの実行」  (追加クエリで追加するテーブルの中身をDELする) (2)「クエリを開く」  (追加クエリでレコード追加) この用に記述し、マクロ名を「AutoExec」で記述して、ファイルを実行してもマクロが起動しません。 (1)の「プロシージャの実行」までは、実行されているようなのですが(テーブル内確認)、以降の追加クエリが実行されません。 何か他の設定があるのでしょうか? お願い致します。

  • Excel一定時間ごとに上書保存するマクロ

    エクセルで、一定時間ごと(例えば5分に一回)に上書き保存を行うマクロを組みたいとおもっております。 エクセルの1セルに、上書き保存を行うと、最終保存時間を表示できるように設定しているのですが、 自動バックアップ等でなく、一定間隔で自動で「上書き保存」を行えるマクロを組みたいと思っています。 使い方としては、該当のエクセルをスタートアップにいれ、自動起動させる。⇒エクセルが開いたら自動でマクロ起動 ⇒ 自動で上書き保存マクロが実行され、最終保存日時が更新される。という流れとしたいです。 どなたか、お教え願えませんでしょうか。 よろしくお願い致します。