• ベストアンサー

Accessの指定時間終了

いつもお世話になってます。 Accessを指定時間に終了できないかと考えております。 現在は、PCをシャットダウンするバッチを作り、タスクスケジュールでシャットダウンしてますが、Accessを起動したまま強制終了します。 出来れば、シャットダウンする前に、データをバックアップ等の処理をいれて終了する事が出来ればと考えております。 もし、Access事態に機能が無いようでしたら、VBScript等でAccessにイベントを送れる等、Access単体で出来なくても結構です。 【環境】 OS:Windows8.1Pro Ver:Access2013

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

  • ベストアンサー
回答No.4

> タスクスケジューラーで、シャットダウンの時にも、「フォームを閉じる」イベント適用されるのでしょうか? 下記の前提が成立するなら、そうです。 Accessファイルは開いている。 フォームも開いている。(メニューフォームあるいは非表示のフォーム) タスクスケジュラーで定時にPCをシャットダウンする。 つまり、下記のような流れです。 PCをシャットダウンするコマンド → 開いているAccessファイルは閉じられる→開いているフォームは閉じられる→フォームの「閉じる」イベントは実行される > ただ、このDBの場合、フォームを押されたボタンにより条件分岐により行き来します、終了イベントと分ける方法はありませんでしょうか? ちょっと意味がわかりません。もう少し具体的に説明してもらえますか。 > お客様に勝手に操作してもらうため、常時開いているフォームがありません。 それなら、データベースファイルの起動時に非表示のフォームを開いておくようにするといいでしょう。 下記のマクロを作成します。 アクション フォームを開く フォーム名 非表示フォーム ウィンドウモード 非表示 このマクロを AutoExec という名前で保存します。 AutoExecマクロは起動時に実行されますので、起動時に「非表示フォーム」が非表示で開かれます。 このフォームの閉じるときに、バックアップ処理を割り当てれば、Accessファイルを閉じるときに、バックアップ処理が必ず実行されます。 > 1.フォームをタイマープロシージャで定期的に再読み込み > 2.フォームの読み込みイベントに、時間を取得 > 3.2で取得した時間を条件分岐で、終了処理プロシージャーを実行 > こんな感じで良いのでしょうか? Accessの方で定時に実行する場合ですね。 そんな面倒なことをしなくても、上記の非表示フォームのタイマー時イベントで、 時刻判断をして終了処理を実行すればいいだけです。 例えば、午後10時に自動終了する場合、 タイマー間隔は 60000 (60000ミリ秒=1分)に設定しておいて、 Const CloseTime = #10:00:00 PM# Private Sub Form_Timer() If Time >= CloseTime And Time < DateAdd("n", 10, CloseTime) Then Me.TimerInterval = 600000 '終了処理 ElseIf Me.TimerInterval = 600000 Then Me.TimerInterval = 60000 End If End Sub ただし、 ユーザーが自由に操作できるという運用なら、当然ファイルも自由に閉じることができますよね。 ということなら、Accessの方で定時に実行するという処理を組み込んでも無意味のように思います。 定時にAccessが開いている保証はないのですから。 上で説明した非表示フォームの閉じるときに実行する方法にしておけば、もしユーザーが定時前にフォームを閉じたら、その時点でバックアップ処理が実行される。ユーザーがファイルを開いたまま帰宅したら、タスクスケジューラでシャットダウンするときに、やはりバックアップ処理が実行される、というように確実にバックアップが実行されます。 別の方法としては、バックアップ処理専用のファイルを作成しておいて、タスクスケジュラーでそのファイルを起動するようにするという方法もあります。 バックアップ処理専用のファイルはAutoExecマクロから終了処理プロシージャーを実行して、処理終了後ファイルを閉じるようにしておけばいいでしょう。

sujino
質問者

お礼

hatena1989様 度々、厚かましいお願いにご回答頂き有難うございます。 サンプルVBAまでご提示いただき有難うございます。 後者のVBAで処理できるよう、試してみます。 ちなみに、アクセスは勝手に終了出来ないように、すべてのフォームを全画面表示にし、最小化・閉じるボタンを禁止してます。 とはいっても、タスクマネージャー開かれたら停止できますが。。。 なんとなく、実装できそうな感じがしましたので、あとは自分なりにテストしてみたいと思います。 厚かましいお願いにお付き合い頂き有難うございました。

その他の回答 (3)

回答No.3

> 手動で閉じるときの処理については、問題なく書けると思うのですが、毎日定時に自動で終了するするように出来ればと考えております。 > 現在は、PCをシャットダウンするバッチを作り、タスクスケジュールでシャットダウンしてますが、Accessを起動したまま強制終了します。 タスクスケジューラーでシャットダウンするときに、Access も閉じられますよね。その時に、フォームの閉じるときのバックアップ処理も実行されます。 それで問題無いと思いますが。 タスクスケジューラーに関係なくAccessだけで定時に実行させたいなら、常時開いているフォームのタイマー時のイベントで自動実行すればいいでしょう。その場合は、下記を参考にしてください。 タイマ時イベントで時刻判断するときの注意点 - hatena chips http://hatenachips.blog34.fc2.com/blog-entry-269.html

sujino
質問者

お礼

hatena1989様 度々の回答有難うございます。 すいません、いくつか確認させてください。 【質問1】 >タスクスケジューラーでシャットダウンするときに、Access も閉じられますよね。その時に、フォームの閉じるときのバックアップ処理も実行されます。 タスクスケジューラーで、シャットダウンの時にも、「フォームを閉じる」イベント適用されるのでしょうか? ただ、このDBの場合、フォームを押されたボタンにより条件分岐により行き来します、終了イベントと分ける方法はありませんでしょうか? 【質問2】 「タイマ時イベントで時刻判断するときの注意点 - hatena chips」参考URLを拝見したのですが、お客様に勝手に操作してもらうため、常時開いているフォームがありません。 ということは、すべてのフォームにプロシージャーを作成すれば、良いという事でしょうか? 処理として 1.フォームをタイマープロシージャで定期的に再読み込み 2.フォームの読み込みイベントに、時間を取得 3.2で取得した時間を条件分岐で、終了処理プロシージャーを実行 こんな感じで良いのでしょうか? 重ね重ねの質問で、お手数をおかけし申し訳ありませんが、アドバイス頂けましたら幸いです。

  • Anzu4699
  • ベストアンサー率59% (26/44)
回答No.2

自分が以前やったことがある手法は以下の通り 環境(バージョン等)が違うので、ご参考程度に乗せときます O S:Windows7 Ver:Access2007 「バックアップ」と「終了」を組み込んだマクロを用意しておき (M_BackUpEnd)、そのマクロをバッチで実行しています ※バッチにさえなれば、タスクスケジュラー等で管理しやすいんで --- TaskSCR_AcsEnd.bat内構文 --- 1行目:"C:\Program Files\Microsoft Office\Office12\MSACCESS.EXE" "C:\temp\SMP04\ImgDownloder.accdb" /x M_BackUpEnd 2行目:exit 以上でした

sujino
質問者

お礼

Anzu4699様 回答有難うございます。 まさに私が希望していた回答だと思いますが、下記を実行すると新Accessが起動しマクロが実行されます。 参考バッチの内容として、私が推測したのですが。 "C:\Program Files\Microsoft Office\Office12\MSACCESS.EXE"  →アクセスのプログラムファイル "C:\temp\SMP04\ImgDownloder.accdb"  → AccessのDBフルパス 【acend.bat】 @ECHO OFF REM kcal2終了バッチ "C:\Program Files\Microsoft Office\Office14\msaccess.exe" "c:\db\test.accdb" /x msg ECHO ON EXIT 【マクロ:msg】 アクション:Accessの終了 オプション:すべて保存 起動している、Accessを終了させるにはどうしたらよいか、アドバイス頂けましたら幸いです。

回答No.1

Accessのファイルを閉じるときに、バックアップ処理を実行したいということでしょうか。 Accessファイルが開いている時に常に表示されているメニューフォームのようなものがあれば、そのフォームの「閉じるとき」イベントでバックアップ処理を実行するようにすればいいでしょう。 常に開いているフォームがないなら、ファイルの起動時に非表示のフォームの開くようにして、そのフォームの閉じるときにバックアップ処理を実行するようにすればいいでしょう。

sujino
質問者

お礼

hatena1989様 回答ありがとうございます。 手動で閉じるときの処理については、問題なく書けると思うのですが、毎日定時に自動で終了するするように出来ればと考えております。 ただ、Accessには時間処理の概念が無いのではと思い、質問させて頂きました。

関連するQ&A

  • Silverkeeper終了と同時にシャットダウンするには?

    スケジュール起動したSilverkeeper(v1.1.4)がバックアップ終了後にiMacをシャットダウンする方法をおしえてください。 Silverkeeperの起動からシャットダウンまで自動化(スケジュール化)したいのです。

    • ベストアンサー
    • Mac
  • Access終了時にマクロまたはVBAの実行したい

    Access初心者です。 Accessを起動するときにマクロを実行する方法として「autoexec」がありますが、終了時にマクロまたはVBAを実行する方法がありますか教えてください。(Access終了時に自動的にバックアップを取るようにしたいため。)

  • Accessが強制終了されて困っています

    WinXP:(すみません) Access:2003 (もうそろそろ?) まだ、使える メインフォームの欄に文字を一字入力しようとすると、砂時計が出て強制終了されてしまいます。サブフォームがあるのですが、そこにカーソルをもっていって文字を入力しても強制終了はされません。 それと、テーブルに戻って、メインフォームと項目が同じ箇所に文字を入力して、それからフォームに戻って続けて文字を入力すると、強制終了は起こりません。 Accessは比較的初心者です。 Webであちこち探して、マイクロソフトの発行している「修正プログラム」をダウンロードしてインスツールしてみましたが、症状が改善されません。 どちら様か、ご存知の方がいらっしゃいましたら、お教えいただきたいと思います。 よろしくお願いします。  

  • 指定時刻の自動シャットダウン(強制終了)について

    指定した時間になると自動的にシャットダウン(強制終了)できるものを教えてください。 タスクスケジューラ内で以下の記述を入れると動くのですが、通常の終了になってしまいます。 %windir%\system32\shutdown.exe -s -t 5 “強制終了”はできないものでしょうか。 フリーソフトで強制終了をかけるものがあるのですが、パソコン起動時にこのソフトを立ち上げて指定時刻を毎回入力しなければならず不便です。 終了をかける時刻は毎日決まっており、変わることはありません。 そして通常終了ではシャットダウンできません。 PCのOSはWindowsXP(pro)SP3です。

  • windows7の強制終了もできません

    FMV-BIBLO NF/E50 windows7を使用していますが、 1時間以上前にインターネットにアクセスしようとしたらフリーズしたため、 タスクマネージャーでタスクの終了をし、 それでもタスクマネージャーの画面が閉じなかったためスタートメニューから再起動を試みました。 しかし、その後「シャットダウンしています…」の画面から動きません。 強制終了しようと起動ボタンを長押ししましたが、反応しません。 パソコンのシステムについては詳しくなく、困っています。 それでも至急やらなければならないコトが山積みなので焦ってます(ρ_;) どーしたら良いのか、どなたか教えてください、 お願いします!

  • バッチファイルでプログラムを強制終了って・・・

    実行中のプログラムを強制終了させてしまうバッチファイルって 果たして作ることが可能なものでしょうか? アドバイスよろしくお願い致します。 対象環境はNT4サーバです。 やりたいことのイメージとしては、例えば、メモ帳でテキストを書き、そして 未保存状態で動かしっぱなしのところを、バッチで強制終了させてしまう、 そんな感じです。当然未保存云々と聞かれますけれども保存せずに強制終了!です。 (もしくは、タスクマネージャを起動し、そのアプリケーションタスクを 終了させる、と表現したほうが良いのでしょうか) ・・・果たしてそんなことってできるのでしょうか? とくにネットワークの処理は考え無く、単にそのNTマシン自身の話なのです。 よろしくお願いします。

  • VBScriptの無限ループ動作で簡単終了方法

    お世話になります。 私のPCでは、監視のために無限ループ動作のVBScriptが三つほど動いています。それでメンテナンスでどれかの一つを停止(強制終了)しようと、タスクマネージャーにアクセスしてもイメージ名が皆同じで、区別がつかず困るときがあります。 そこで、最初からこの無限ループ動作のスクリプトに仕込みをしておいて、いつでも簡単に終了させる方法などありますか。検索してもまったく見つかりませんでしたので、相談させて頂きました。

  • エクスプローラーコピー終了時自動シャットダウン等

    エクスプローラーコピー終了時自動シャットダウン等 ↓↓↓除外↓↓↓ 1.Windows 10標準のタスクスケジューラ利用では15分置きにアイドル状態検出を利用するので、最短15・16分置きにしか自動シャットダウン出来ない。 2.タイマー機能は全て利用しません。 ↑↑↑除外↑↑↑ Windows 10 Pro 64bitで、 「単純に」エクスプローラーコピー(移動も含む)の終了を検知して、 直ちにシャットダウン・強制シャットダウン・再起動・強制再起動・スタンバイ(スリープ•サスペンド)・休止状態(ハイバネート)に、 自動的に移行出来るソフトはありますか? 移行するだけなら上にも書きましたが、 「単純に」エクスプローラーの終了を検知すれば、後は移行するだけと思うのですが、そういうソフトを探したけど見つからないです。 .txt→.bat バッチファイル化で何とかなるなら、アプリではなくデスクトップにバッチファイルを置き、 バッチファイルの構文に、 電源自動移行ON用の1ファイル、OFF用に1ファイルを置きたいです。 詳しい方どうかよろしくお願いします。

  • シャットダウンに時間がかかるのを回避したい

    WIndowsXP Proを使用しています。 最近、シャットダウンをしても、プログラムが終了しています…という メッセージがずっと出て、シャットダウンに異様に時間がかかるようになりました。 たまに、応答しないになって、シャットダウンが終了せず、 仕方なく電源ボタンを押して強制終了してしまうこともあります。 しかし、あまり強制終了はよくないと思うので、なんとかこのような状態を回避したい のですが、どのようにすればよいでしょうか? どうぞよろしくお願い致します。

  • 終了する時に、すごく時間がかかるようになりました。

    ここ1.2週間前からなのですが、終了するのにすごく時間がかかるようになりました。 スタート→終了と押すと、そこから5分くらいして、「終了・再起動・キャンセル」の パネル(←すみません、なんて言っていいのか)が出ます。 最初の頃は、5分でそのパネルが出るとは分からなかったので、バンバン強制終了をし、 それでも何も出なかったり、タスクマネージャとかが出て止まったりと、 電源を切る事も結構ありました。 どうしていきなりこうなってしまったんでしょう。 メディアプレーヤーを更新しましたが、それ以外は何もしていません。 会社でのパソコンなので、写真なんかが入ってるわけでもないし、データも 以前、こちらで教えて頂いた様にバックアップしてますので、パソコン上には残ってません。 筆ぐるめだけは残ってると思います。 これって、もう寿命でしょうか? 4年前に買った、デスクトップです(ソニー)。 どなたか分かる方がいらっしゃいましたら、宜しくお願いします。