こんにちは。sanamekoです。きのこでは一番舞茸が好きです。
データ周りの仕事をすることが多いので、Microsoft Accessをよく使っています。
ちょっとしたデータの更新や抽出の依頼は、笑顔で引き受けている(つもりの)私です。
しかし、エライ人の「このレポート毎週出力してよ~」という鶴の一声によって、ちょっとした依頼が定例作業と化したときは、さすがに笑顔が引きつってしまいます。
このつまらない定例作業、何とかできないものかと試行錯誤し、AccessのAutoExecマクロと、Windows機能のタスクスケジューラを組み合わせたところ、作業がとってもラクに、というか作業をしなくて済むようになりました。
というわけで、今回は、「Access自動実行化」をご紹介します。
基本編
例として、以下のようなとてもシンプルな処理を行ってみます。
・テーブル[T_果物]のレコードを全件出力
・出力はExcel形式で
・指定したフォルダに出力
・毎週水曜日の12時に出力
1.AutoRunマクロ作成[Access]
Accessでマクロを新規作成し、実行させたい処理を設定します。
下記2つは、自動実行用のための設定です。
- マクロ名は「AutoExec」(このマクロ名にすることで、起動時に自動的に処理を開始するようになります。)
- マクロ処理の最後に「Accessの終了」を設定
2.タスクを作成[タスクスケジューラ]
タスクスケジューラを起動し、タスクを新規作成します。
「トリガー」画面
・毎週水曜日の12時に起動するように設定
「操作」画面
・プログラム/スクリプト:MSACCESS.EXEのフルパスを指定
・引数の追加:実行したいaccdbファイルを指定
設定は以上です。
PCの電源さえつけていれば、指定した時間に勝手に処理をし、勝手にファイルを吐き出してくれます!
応用編その1
マクロでの処理は、手軽ではありますが、出来ることに限りがあります。
プロシージャに処理を記述することで、処理の幅が広がります。
この例では、先ほどと同じく、「AutoExec」マクロを作成します。
そこで、プロシージャ「AutoExec_Module_1」を呼び出す処理を設定します。(このプロシージャ名は何でも構いません。)
呼び出すプロシージャには、下図のように処理内容を記述します。
(ここでもたいした処理はやっていませんが・・・)
あとは先程と同様、Accessを起動させるようなタスクを作成すればOKです。
応用編その2
タスク登録したタイミング以外にも、例えば「月末に処理を行いたい」など、手動で処理を行いたいときがあるかもしれません。
しかし、今までご紹介した方法だと、Accessを手動で起動したときにも、勝手に処理が始まってしまいます。
そこで、タスクスケジューラでの設定時に「引数」を指定することで、タスクスケジューラから起動したのか、手動で起動したのかを判断し、処理を制御することができます。
タスクスケジューラの「引数の追加」で、accdbファイルの後に[ /cmd *]と入力します。(*は引数)
下図の例では、引数として「1」を指定しています。
この引数は、Accessの起動時に[Command]という変数に格納されます。
Accessを手動で起動したときは[Command]には何も値が入りません。
これを利用して、『[Command]が空のとき、プロシージャ内の処理を行わない』という分岐をさせます。
また、上図のコードのように、引数の値によって処理内容を変えたりもできます。
以上、いくつか例をご紹介しましたが、簡単な設定だけでできますので、
Accessを使った定例作業が多い方は、是非試してみてください!
\\『明日のはたらくを創る』仲間を募集中!! //
中途採用ページには記載がないですが、データエンジニアも大大大募集してます!!Access使える方大歓迎!!
919.jp