• ベストアンサー

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

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時の自動更新だけでいいので、通常エクセルを開いた状態ではマクロは自動に働かなくもいいです。このようコード記述を教えて下さい。 この説明で分かるでしょうか?

  • dmura
  • お礼率31% (5/16)

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>上のコードだと指定した時間に動きません #1にも書いていますが、指定した時間に動かすというコードではありません。

dmura
質問者

補足

そうなんですか・・・ エクセルファイルと開っきぱなら、動くと勘違いしていました。 となると 5時に自動で更新させる手段は、タスク設定しかないのでしょうか? タスク設定の質問と回答を見て、色々と試したのですが うまくいかないです・・・ 他に方法はありますか?

その他の回答 (2)

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

ご質問の内容は、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1452963 まだ、クローズされていませんが、こちらに返事をつけてください。 >1.エクセルを一日置き(朝5時)に自動で立ち上げる。(たぶんタスクで設定できる?) ショートカットを置いて、タスクで行ってください。そうしなければ、ずっとExcelを開けて、OnTime メソッドを置かなくてはなりません。 >2.立ち上がった場合は、マクロを自動で動かす。 >立ち上げた場合に自動で動かす方法は分かったのですが、これだと普段見る場合も >マクロが動いてしまって >定期的に自動で更新しないとうまくいかないので・・・ とご自分で書いているのではありませんか? つまり、その時だけしか、マクロは動きません。 >このコードをOPENイベントに入れれば自動更新ができると教えてもらったのですが このようなことは、私は書いておりません。

dmura
質問者

お礼

すいません gooの使い方が無知なもので・・・ 内容を参考にしてみたいと思います。 ありがとうございました。 でも、今のマクロの編集画面が開かないという新たな問題が発生 うーん困った

dmura
質問者

補足

Private Sub Workbook_Open() Const SetTime As Date = #5:00:00 AM# If (Time >= SetTime) And _ (Time <= SetTime + TimeValue("00:01:00")) Then '--実行--' Sheet2.CommandButton1.Object.Value = True End If End Sub 度々すいませんが 上記コードは、どうなんでしょうか? ・Openイベントに 5時を指定 ・その次にシート2のボタンをクリック IFの間にボタンを押すコードを入れましたが正しいでしょうか?その後に入れるものなのでしょうか? エクセルを開いたままで、動かしてみると、上のコードだと指定した時間に動きません。閉じた状態でも同じです。 何が悪いのでしょうか? エクセルを開いた状態で、 AM5時にシート2のボタンを押す。 タスクの設定はうまくいかないので、エクセルファイルを開いた状態でも構いませんので教えて下さい。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

VBEで、ThisWorkbookを選んで、ダブルクリックして 左側のプルダウンメニューを (General) から Workbook に変更します。 すると、 Private Sub Workbook_Open() End Sub というのが表示される(書かれる)と思いますが、これがOpenイベントです。 この部分にコードを書いても、5時にエクセルが起動するということはありません。 タスクスケジューラーなどで、5時にこのエクセルファイルを起動するようにしておけば、起動したときに、このスクリプトが実行されます。 質問文のスクリプトでは、5時から1分以内の時に、 '--実行--' の部分に書かれたスクリプトを実行します。 それ以外の時間帯の場合には、何もしません。

dmura
質問者

お礼

内容を参考にしてみたいと思います。 ありがとうございました。 でも、今のマクロの編集画面が開かないという新たな問題が発生 うーん困った

dmura
質問者

補足

Private Sub Workbook_Open() Const SetTime As Date = #5:00:00 AM# If (Time >= SetTime) And _ (Time <= SetTime + TimeValue("00:01:00")) Then '--実行--' Sheet2.CommandButton1.Object.Value = True End If End Sub 度々すいませんが 上記コードは、どうなんでしょうか? ・Openイベントに 5時を指定 ・その次にシート2のボタンをクリック IFの間にボタンを押すコードを入れましたが正しいでしょうか?その後に入れるものなのでしょうか? エクセルを開いたままで、動かしてみると、上のコードだと指定した時間に動きません。閉じた状態でも同じです。 何が悪いのでしょうか? エクセルを開いた状態で、 AM5時にシート2のボタンを押す。 タスクの設定はうまくいかないので、エクセルファイルを開いた状態でも構いませんので教えて下さい。

関連するQ&A

  • タスク設定後の指定時間のマクロ起動について

    タスク設定で5時にエクセルが立ち上がります。 OPENイベントにコマンドボタンのマクロを入れてあるので、5時の起動時にはマクロが起動します。 で、 このマクロは5時に動くだけで良いという命令文がハッキリと分かりません。 今だと、タスクで指定した5時とエクセル起動時にマクロが起動する状態です。当たり前ですが・・・ Const SetTime As Date = #5:00:00 AM# If (Time >= SetTime) And _ (Time <= SetTime + TimeValue("00:01:00")) Then '--実行--' End If 以前の質問で、上記のコードをOPENイベントに一緒に入れてるとよいと教えてもらったのですが、コードを入れると タスクで指定した時間にマクロ起動しなり 通常にエクセルを起動してもマクロが起動しません。 解決方法を教えて下さい。

  • エクセルで時間と連動して数値を変えるには????

    エクセル2010 で10時から12時の間には1がセルに入力されてそれ以外には0が入力されるというコードをマクロで作っているのですがどうしてもエラーになります If Time >= TimeValue("10:00") And Time <= TimeValue("12:00") Then Range("a1") = "1" Else Range("A1") = "0" End if 何がおかしかったのでしょうか??????? どなたかできればでいいので正しいマクロコードを教えて下さい お願いします ちなみに中1です

  • EXCELパスワード付ファイルでリンクの自動更新について

    EXCELでパスワードをファイルに設定したのですが、Linkの更新をするとき、マクロの記述でWorkbook.Open(,,password・・・)の様にパスワードを自動的に入力したいのですが、どのようなコードで可能になりますか。 EXCELのマクロ初心者です。よろしくお願いします。

  • 続 EXCELのマクロでBook1立ち上げ時に自動で別のBookを起動するには

    QNo.3774822 「EXCELのマクロでBook1立ち上げ時に自動で別のBookを起動するには」(http://oshiete1.goo.ne.jp/qa3774822.html)でお世話になった者です。その節は多くの方にご回答いただき有難うございました。 前質問ではANo.6にて必要な回答が得られたため締め切り手続きを行ったのですが、この間にANo.7の回答をいただきました。この内容は私にとって大変興味深いもので早速試してみたのですが、私には高度な内容でうまく動作させられませんでした。既に締めていたため新たな質問もできず、こちらに質問させていただく次第です。 次のコードを正しく実行するための記述の仕方をアドバイスいただければ幸いです。 以下ANo.7のご回答者様の回答の抜粋です。 '============================================= 以下は、ほんのお遊びにしか過ぎませんが、こんなことが可能です。 なお、Book1... のような名称というのは、仮の名称であって、特に、それ自体が存在しているとはいえません。 Book1... のSheet1 のA1 に、hirakegoma と入ったときにだけ、別のファイルが開きますが、以下の「待ち時間」の4秒後を過ぎると、何も起こりません。4秒後に入れたものには何も起こりません。開いたと同時では、場合によってはマクロの検索は利かないはずです。 以下のマクロは、カプセル化もしておりませんし、本格的な内容ではありませんが、このようなことが可能です。また、別のソフトのインスタンス生成自体では、Excelのアプリケーションがどのような反応をするかは分かりません。 個人の場合は、"PERSONAL.XLS" ですが、他人に配布する場合は、アドインになると思います。 また、Excelが起動したときに、ブックの中身やブックの名称を全部調べるという方法も可能だと思います。 ループで、 For Each wb In Workbooks  If wb.Name Like "Book#*" Then    Workbooks.Open "Abc.xls"  End If Next '------------------------------------- 'Class1 '------------------------------------- Public WithEvents App As Application Private Sub App_NewWorkbook(ByVal Wb As Workbook) '待ち時間 Const TIMELAG As Integer = 4   Set NewWb = Wb   Application.OnTime Now + TimeValue("00:00:" & CStr(TIMELAG)), "OpenSesame" End Sub '-------------------------------------- '標準モジュール '-------------------------------------- Public myClass As New Class1 Public NewWb As Workbook Public Sub OpenSesame() '添付用のブック Const MYBOOK As String = "Test1.xls" With NewWb.Worksheets(1)  If StrComp(.Range("A1").Value, "HirakeGoma", 1) = 0 Then   If Dir(MYBOOK) <> "" Then    Workbooks.Open "Test1.xls"   Else    MsgBox MYBOOK & "のワークブックが見当たりません。", 48   End If  End If End With Set NewWb = Nothing End Sub '-------------------------------------- 'ThisWorkbookモジュール '-------------------------------------- Private Sub Workbook_Open()  Set myClass.App = Application End Sub '標準モジュールのAuto_Openの場合は、オートメーションでは、そこを通らない可能性があるから、ThisWorkbook モジュールに入れたほうがよいです。Auto_Open は、あくまで、Excelを単独に開いたときだけです。

  • VBAのタイマー

    こんにちは VBAで、一日に一回起動するマクロを作ろうと思っています。 Sub timer() Dim settime As Variant Dim waittime As Variant settime = TimeValue("00:35:00") '指定時刻 waittime = TimeValue("00:01:00") settime = settime + waittime '指定時刻待ち時間 Application.OnTime TimeValue(settime), "sub" End Sub な感じなのですが、これだと一度起動すると二日目以降は動作しなくなります。 毎日起動するにはどうしたら良いものでしょうか

  • マクロの定期更新

    エクセル内にあるマクロを、定期的に自動で動かしたいのですが、教えていただけますか? 具体的に 1.エクセルを一日置き(朝5時)に自動で立ち上げる。(たぶんタスクで設定できる?) 2.立ち上がった場合は、マクロを自動で動かす。 の流れです。 立ち上げた場合に自動で動かす方法は分かったのですが、これだと普段見る場合もマクロが動いてしまって 定期的に自動で更新しないとうまくいかないので・・・ 宜しくお願いします。

  • VBAのIF分で時間指定の条件式の書き方

    VBAのIF分で時間指定の条件式の書き方を教えてください。 9:00~14:00で実行する下記のマクロはうまく機能しています。 If Time >= TimeValue("9:00:00") And Time <= TimeValue("14:00:00") Then 下記をご教授願います。 16:00~翌日の4:00までの、日をまたがっての12時間後の条件式の書き方を教えてください。 よろしくお願いします。

  • エクセル タスクスケジューラでマクロ自動実行

    お世話になります。 win7/エクセル2010使用です。 エクセルのThisWorkbook_openでマクロを実行するファイルAを作っています。 ※Auto_Openは記述していません。 ファイルAをタスクスケジューラに設定いたしました。 問題なくマクロが自動実行されて、目的は果たしています。 ただ、不思議な点があります。 このファイルAをダブルクリックして開いても マクロは自動実行されていきます。 このファイルAをコピーして、ファイルBを作り それをダブルクリックで開くと、 ファイルBは、ブックが開いた後に、「セキュリティーの警告」がされて マクロの自動実行ができません。 通常は、「セキュリティーの警告」を出さないために Auto_Openなどでコードを記述すると思うのですが、 なぜ、Auto_Openを記述していないファイルAが自動実行されるのかがわかりません。 タスクスケジューラの設定に何か関係はあるのでしょうか? よろしくお願いします。

  • エクセルマクロで

    エクセルマクロでファイルの有無を確認したくて 次のようなマクロを作りました。 Dim fso Const Folder = "D:\AAA" Const File = "*****.xlsx" Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists(Folder & "\" & File) = False Then MsgBox "ファイルは存在しません" ファイル名の*****部分に Range("A1").Valueを使いたいのですがうまくいきません。 どのようになるのでしょうか。よろしくお願いします。

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

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

専門家に質問してみよう