• ベストアンサー

エクセル2003VBA 所定の時刻にVBAを自動で作動

エクセル2003のVBAなのですが、 「所定の時刻に自動でマクロが動き出す」と言う事は可能でしょうか? もし、可能であれば、参考になるHPや、VBAの記述の仕方など 教えていただけないでしょうか。 自動で動かしたいVBAの概要として、 他のエクセルファイルをオープンして データーを取得、記述、 保存 と言うVBAになっております。 これを1日1回、更新をかけたいのですが、自動でできるのであれば 自動化したいと思っています。 ご回答のほど宜しくお願いいたします。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.4

> コードはメモ帳に記述すればよいのでしょうか? はい。バッチファイルのようなもんです。 Windowsが内容を解釈して実行してくれます。 C ドライブの中を 拡張子 VBS で検索するとかなり出てきます。 色々な自動化に使われています。 >動作をさせるファイルはサーバー機にファイルがあるのですが、 >そうすると、VBSコードはサーバー機に保存して、設定もサーバー機 >にしないといけないと言う事ですか? いいえ。 VBS ファイルはクライアントに置いて大丈夫です。 xlsファイルへのフルパス を \\srver1\arekore\that.xls の様に UNC名で記述して下さい。 サーバー機への設定は不要です (もしかしたら共有フォルダのアクセス権で引っかかるかも知れません) (サーバーの OS が Linux だったら・・分かりません) 以下、蛇足ですが WSH(VBS)を理解するうえで役に立つと思われるリンク Windows Script Host Laboratory http://wwwroy.hi-ho.ne.jp/mutaguchi/wsh/wshtop.htm Hey, Scripting Guy! http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/default.mspx ヘルプドキュメント(Script56.chm)は本家から (パッケージになってますので適当な所へインストールして下さい) http://www.microsoft.com/japan/msdn/scripting/

tmgolf
質問者

お礼

ご丁寧にお返事ありがとうございます。 URL等も教えていただき誠にありがとうございます。 これらを見て、自分の環境に適用していけるよう 頑張ってみます。 ありがとうございます。

その他の回答 (3)

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

こんにちは。 もしかしたら、インターネットを経由してWebサイトからのデータ取得ではありませんか? 株価や為替レート取得などです。 いままで、ここの掲示板で、似たような質問はあったものの、前の人たちは、どうしていたかというと、Excelを開きっぱなしにして、zap35さんのご回答のように、OnTime メソッドを使っていました。 今回、私は試してみましたが、こちらでは、成功しました。理屈では分かっていたのですが、やってみると、細かい部分が分かっていませんでした。 文章があまり良くまとまっていませんが、分からなかったら、再度、質問お願いします。 ------------------------------------------ まず、 「タスク」に設定して、Excelの特定のブックを開くようにすれば出来ます。 後は、VB Editor のThisWorkbook モジュールに、Workbook_Open イベントを設定しておけばよいと思います。 「タスク」は、 コントロールパネルから、[パフォーマンスとメインテナンス]を選び、 タスクを選択してください。 [スケジュールされたタスクの追加]で、ブック名を指定して、ウィザードにご希望どおり入れていってください。 なお、タスクの設定方法は、 http://www.accessclub.jp/samplefile/help/help_220_1.htm ここをごらんください。ただし、こちらは、[XP SP2] ですが、少し内容が違っています。 # クリックすると、パスワード入力が求められます。 の部分は、そういう設定をしてしまうと、こちらではエラーが発生してうまく実行できません。 一旦パスワード設定なしに、タスクの設定が終わった後に、プロパティのタスクの □ ログオンしている部分にのみ実行する([実行する]がオンに... □ 実行する(スケジュールされたタスク...) 両方にチェックを入れてください。 話が前後してしまいますが、ブックのマクロの設計の全体は、以下のようになります。 × 1)VBAが自動でファイルを開ける * 不要(タスクが行います- 2)VBAが作動 +3)自動保存 (ThisWorkbook.Close True を使います。) 4)Applicaiton.Quit 私の考えでは、そのまま、ThisWorkbook.Close True で、[保存 ->終了]だと、その後の、Excel自体の終了マクロが実行しないようなのです。そこで、Ontime で、マクロの実行を残しておくわけです。たぶん、Application設定なのだから実行できるのだと思います。 ThisWorkbook モジュールの Private Sub Workbook_Open() '自動起動処理マクロの呼び出し 'ファイルを閉じる(20秒後ですが、マクロの処理時間を考慮して、ユーザー設定してください) Application.OnTime Now + TimeValue("00:00:20"), "mAutoClose" End Sub '標準モジュール Sub mAutoClose()  Application.Quit End Sub 注意:場合によっては、Excelが開いてから安定するまでの時間を計って、マクロの実行の余裕をみたほうがよいかもしれません。ですから、その場合は、OnTime で、マクロの自動実行の有余時間をとります。そのまま、不安定なままで実行してしまうと、例えば、Webクエリなど、IE オブジェクトを必要とするような場合は、うまく実行しないことがあります。私のマクロなどでは、Excelの起動時直後に、他のオートメーション・オブジェクト(IEなど)を使用すると安定が悪く、エラー発生することがあるようです。 また、マクロは、十二分にエラー処理などを施されているのは言うまでもありません。 もし、自分がExcelの使用中に、Excelの特定のブックを開き動かすには、#2さんの方法がよいかもしれません。今回の私の設定ですと、今、使っているExcelも終わろうとしてしまいます。ただし、使用中のブックが保存していなければ、キャンセルをすれば、タスクに設定されたブックだけが閉じて、後は止まります。

tmgolf
質問者

お礼

ありがとうございます。 現在のところ、No2さんの方で色々試しております。 こちらのやり方も、勉強させてもらい、今後活用して いければと思います。 タスク機能について、とても勉強になりました。 誠にありがとうございます

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

まずは下記コードをそちらの環境に合わせて変更し 拡張子を VBS にしたファイルにして 保存しダブルクリックして実行してみてください。 set objXL = CreateObject("excel.application") objXL.Workbooks.Open("xlsファイルへのフルパス") objXL.Visible = true objXL.run "xls のモジュール名" うまく動いたら xlsを終了してください。 先ほどの VBSファイルをメモ帳で開いて objXL.Visible = true を objXL.Visible = False に変更します。 で上書き保存。 これで xlsファイルは開かれてモジュールが実行されても 見えなくなります。 毎日 突然 xlsファイルが現れるのは・・・と思いますのでお好みで。 ※現状だとxlsファイル(EXCEL)は見えては居ませんがずっと残り続けますので >と言うVBAになっております に Application.Quit ととでも付け加えて自動的に終了するようにして下さい。 (VBSファイルの方で終了処理を行う事も出来ますが、強制終了ですので  VBAが実行中だったり何かのエラーで止まっていたりすると危険です  なのでVBA(EXCEL)側で終了させた方が安全です) また実行結果をその都度 ログファイルに書き出すようにVBAに手を加えた方が なにかと宜しいかと思います。 ここまできたら スタートメニュー → アクセサリ → システムメニュー に タスクがありますので先ほどの VBSファイルを登録すれば 毎日自動的に実行されるようになります。 登録はウィザードにしたがって進めてゆけば分かるかと思います。 独り言 WorkBookのOpen時イベントに例のVBAが書かれているのなら VBS は要らないかな・・でもうっかり開いてVBAコードが走ってしまったら 問題になるかもしれない。

tmgolf
質問者

補足

ありがとうございます。全く理解できていませんんで、申し訳ないので 質問をさせてください。 VBSと言うものが全く理解できていないのですが、 コードはメモ帳に記述すればよいのでしょうか? 動作をさせるファイルはサーバー機にファイルがあるのですが、 そうすると、VBSコードはサーバー機に保存して、設定もサーバー機 にしないといけないと言う事ですか? VBSが理解できていないもので、、、 もしお手数でなければ、ご回答のほどお願いいたします。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

OnTimeメソッドを使います Application.Ontime TimeValue("12:00:00") "Macro1" のように指定します。 また現在時刻から一定時間後に起動するなら Application.Ontime Now + TimeValue("06:00:00") "Macro1" になります 詳しくはOnTimeのヘルプをみるか、「エクセル VBA OnTime」でネット検索してみてください

tmgolf
質問者

補足

ご回答ありがとうございます。 根本的なことを説明していませんでした。 VBAのファイルは現在、人の手で 1)ファイルを開ける→2)VBAを動かす→3)自動保存してファイルを閉じる となっております。 これを所定の時刻が来たら 1)VBAが自動でファイルを開ける→2)VBAが作動→ 3)自動保存してファイルを閉じる と言う形にしたいのですが、、、 よくよく考えてみたら、VBAの記述されているファイルが開いていない のに、VBAを自動で動かすのって、無理ですよね? これを実現しようと思ったら、win上で動くものにしないと無理ですよね?

関連するQ&A

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

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

  • エクセル 自動更新 時刻

    エクセルで自動で時刻を更新できるようにするにはどうすればいいでしょうか? できれば0時ではなく24時表示で夜中の1時、2時と自動でエクセル表示させたいと思っています。(時間のみでいいので分、秒はいらないです。) エクセルを開いた状態で更新されるような方法はありますか?

  • Excelでの最終更新時刻表示

    制限をかけたExcelファイルの、あるセルにNOW関数で開いた時刻を表示させていますが、読取専用で開いてもその時点の時刻が表示されてしまいます。最終更新時刻が表示されていると望ましいのですが、VBAでクローズ時の時刻を更新するような手立てしかないでしょうか?(それすらできるかどうかは不明ですが・・・)  1. 保存時にのみ現在時刻をセルに更新することが可能か?  2. 1がVBAで可能とした場合、読取専用では強制的にマクロ無効とできるか? 要は、読取専用で最終更新時刻が分かるようにしたいのです。NOW関数だと開いた時刻となってしまい、いつが最終更新か分からず、更新時に手入力で時刻更新だとミスもあるだろうから自動でできないか?ということです。 VBAにすると知識の浅い者から、開いた場合のセキュリティ警告画面で質問されることも考えられるので強制無効が可能ならばベター、それ以前に関数で対応できればベストだと思われます。 よろしくお願いします。

  • EXCEL VBAを使用してCSVを自動更新

    こんにちは。 今、EXCELのマクロ(VBA)を使ってネットショップのCSVを自動更新しようと試みているのですが、具体的にいうと価格.comの家電(パソコン・プラズマテレビ)の人気ランク1位~5位までの商品の情報をCSVに落とし込んで、商品コメントと商品画像を同時に取り込みたいという事なのですが、これらのVBAをエクセルで動かしたいのですが、何分VBA初心者なので手詰まりの状態です。 ※CSVの用途は、ネットショップのサイトを更新する情報をCSVにて一括管理しています。通常は、FTPを用いてアップロードして更新しています。 いい記述・もしくは方法はないでしょうか?宜しくお願いします。

  • エクセル マクロで自動実行と終了について

    エクセルで作ったマクロを自動実行・自動保存・自動終了したいので、下記のような 記述のマクロをつくり、Windowsのタスク処理で1回/日実行させようとしています。 ----<ここから>------------------------------------ Sub Auto_Open()    :   :   Workbooks("ekuseru.xls").Close SaveChanges:=True End Sub ----<ここまで>------------------------------------ 質問その1  マクロを編集したい場合はどうすればいいのでしょう?  そのBookを開くとマクロが動き出し、保存した上で終了してしまいます。  マクロ無効でBookを開くと「ツール」⇒「マクロ」⇒「マクロ」で「編集」はクリッ  クできないようになってます。 質問その2  マクロが終了するとき、Bookは閉じますがエクセル自体は閉じません。  (意味通じますか?)  エクセル自体を閉じるにはマクロの記述はどうすればいいのでしょう? 以上、よろしくお願いします。

  • Excel VBA 時刻でのDo~Loopの抜け方

    いつもお世話になっております。 Excel VBA 時刻でのDo~Loopの抜け方を教えてください。 下記のような記述で、時刻(時間)の条件を満たした時 ループを抜けるように設定したのですが、 時刻が「8時」とか「15時」というように 時間でしか対応しません。 「何時何分」という設定にも対応するためには どのように記述すればよいか教えてください -------の部分は何らかの記述が入っているものとしてください。 ↓このように記述しました Do Until MyHour > 15 MyHour = Hour(Now) ------------------- -------------------- -------------------- Loop どうぞ、よろしくお願いします。

  • マクロとVBA

    エクセル2000を勉強していると、マクロとかVBAという言葉が出てきます。マクロは分かってきたんですが、VBAとはなんですか? また簡単なマクロを組んだり、VBAを勉強したいので参考になるHPなどがあれば教えてください。

  • エクセルのVBAについて

    エクセルのVBAについて教えて下さい。 エクセルのVBAでプログラムを組んでいるのですが、一つわからないことがあるのです。 マクロが実行(オープン)されるファイル名(ファイルパス)をVBAで取得するためにはどうすればいいでしょうか? たとえば、マクロが実行されるファイルがC:\テスト.xlsならば "C:\テスト.xls"を取得したいと考えています。 どなたかご教授お願い致します。 宜しくお願い致します。

  • Excel VBA ファイルが使用可能になれば 自動実行する仕組み

    Excel のマクロで、読み取り専用から編集状態に入ったときに 自動実行される仕組みは作れないものでしょうか? どんなシチュエーションかというと… ------------------------------------------------------------ 1.Aさんが \\Folder\File1.xls を開く 2.Bさんが \\Folder\File1.xls を開くと、読み取り専用になって開く 3.Aさんがファイルを閉じる 4.Bさんに「使用可能」通知が来る(編集しますか?と聞かれる) 5.Bさん【編集】するをクリックする この、5.Bさんが編集可能になった時点で、自動で実行するマクロを記述したいんです。 エクセルを開くときに自動実行するマクロありますよね。(Auto_Open() や、WorkBook_Open() など) そういう感じで 編集可能になったら走るマクロって可能でしょうか。 理由は、このファイルを開くと同時に上書き保存してるんですが (BuiltinDocumentProperties("Last author") ←の値をとるためです) 今度また別の人が開いたとき、今はBさんが編集しているのに 最終保存者=Aさんの名前で 使用者通知がされてしまうのです。 さらに補足しますと、マクロで制御しないと 「このファイルは Aさんが使ってます。読み取り専用で開く?」が 表示された後 「キャンセル」を選択すると 異常終了してしまうので "Last author"を取得する方法しかないんです。(他にあったりして?) 理想は、  4.Bさんに「使用可能」通知が来る(編集しますか?と聞かれる) の表示をさせずに マクロの制御で 「使用可能になりました。いったん閉じてから再度開き直してください」 という仕組みに出来たら最高です。 長くなりましたがよろしくお願いいたします。

  • Visual Basicについて教えてください

    会社でVBAらしいマクロ(エクセル)をみつけましたが、解読の仕方がわかりません。Visual Basicのどんな参考書を見ればわかるでしょうか。マクロのボタンを押すとデータが所定のフォルダに保存できるというものです。(わかりにくくてすみません。) 今日、エクスメディア「エクセル マクロ&VBAプログラミング」を 買いましたが、これでよかったのでしょうか。 自分でもマクロのプログラミングを仕事で使いたいのでどの参考書が よいか教えてください。 カテゴリー違いで申し訳ありません。

専門家に質問してみよう