http://www.hatena.ne.jp/1097042545#
マイクロソフトACCESSXPで毎晩テーブルの内容をファイルに書き出したいのですがバッチの書き方がわかりません。タスクスケジュールでmdbを起動してautoexecマクロで行おう.. - 人力検索はてな
特に問題は無いと思いますが…
私だったらmdbを起動しっぱなしにしておいてフォームのTimerイベントで指定時刻になった時に処理を走らせるようなプログラムとかにするかな。
その時はOSのスタートアップにmdbを追加しておく感じですかね。
起動時の設定でTimerイベントを入れてるフォームを起動するように指定しておけばOKかと
まぁ タスクスケジューラでやる処理もAccessで作っちゃうって感じですかね
まず、テーブルの内容をファイルに書き出すと言うことですが、一応Excelファイルへの書き出しについて書かれたページを見つけましたので、載せておきます。
また、テーブルを他のmdbに書き出すという場合は以下のような手順になります。
マクロを新規作成して、
アクション:データベース変換
変換の種類:エクスポート
データベースの種類:Microsoft Access
データベース名:(送り先のmdbファイルのフルパス)
オブジェクトの種類:テーブル
オブジェクト名:(書き出したいテーブル名)
変換先名:(送り先のmdbファイルの中でのテーブル名)
テーブル構造のみ変換:いいえ
・・・と設定します。
このマクロを実行するとデータベース名で指定したmdbファイルにテーブルを書き出すことが出来ます。
もちろんマクロ名はautoexecとすると、開いた時に自動実行されます。
このケースですと、上書きされてしまいます。もし、1日毎に違うファイル名で保存したい場合は、データベース変換(ワークシート変換)を行った後、テーブル名を変更する仕組みを考えなければなりません。
1日毎にテーブル名を変更して書き出すマクロはちょっと思いつかなかったんですが、VBAならば、テーブルの書き出しも、テーブル名(あるいはファイル名)の変更も一緒に行えるので、VBAの知識があれば、そちらのほうがいいと思います。
上書きでも問題ないし、もっと手軽にやりたいのであれば、dosコマンドを利用して、mdbファイルごとコピーしてしまうのはどうでしょう?
copy a.mdb b.mdb
上のような感じで入力したテキストファイルを「〜〜.bat」として保存し、タスクスケジュールで指定すれば、a.mdbをb.mdbとしてコピーが出来ます。
こちらもファイル毎のコピーになりますが、一番楽そうなので紹介しておきます。これなら設定しておけば自動的に別名で保存してくれるみたいです。
コピタン!良いです。今回使わなくても買います。ありがとうございました。
私の場合、標準モジュールを作ってやりました。
上記のページにモジュールを張ってありますので、よかったら使ってみてください。
毎晩行うのであればVBが使えれば本当はその方がスマートかもしれませんね^^
テーブル作成クエリーがCSVファイル作成クエリーになるのですか!@@ためになります。ありがとうございました。
Timerコントロール探したんですが見つかりませんでした。もう一度探します。ありがとうございました。