日常~おまけ雑記~

日常にほんの少し活力を~毎日の出来事やオーディオなど趣味のことを紹介するブログです



テーブルをCSV出力してバックアップフォルダに格納する方法|ACCESS

テーブルをCSVファイルにエクスポートするVBA

さらに格納するフォルダを都度タイムスタンプをして、いつバックアップしたテーブルデータか分るようにもしておきます。

 

 

■サンプルACCESSの構成

ここでは適当に作成したテーブル2つと、エクスポートするためのモジュールを1つ作成しておきます。

【テーブル】

T_商品

T_店舗

【モジュール】

Module1

 

 

 

 

■テーブルのデータ内容はこんな感じ

【T_商品】

ID オートナンバー

商品コード 短いテキスト

商品名 短いテキスト

 

【T_店舗】
ID オートナンバー

店舗コード 短いテキスト

店舗名 短いテキスト

 

 

 


■バックアップフォルダとCSV保管用フォルダ

Cドライブに「バックアップ」フォルダを用意します。

さらにその中には「一時」フォルダと「保管」フォルダの2種類のフォルダを用意しておきます。

CSV保管の流れとしては

① 「一時」フォルダにCSVファイルを格納する
② 「一時」フォルダを「保管」フォルダ内にコピーする
③ 「保管」フォルダ内の「一時」フォルダの名前を日時(タイムスタンプ)に変更する
④ 最初の「一時」フォルダ内のCSVファイルを削除する

となり、最終的に「一時」フォルダ内には何も残りません

 

【バックアップフォルダ】

Cドライブに作成しています

 

 

 

【バックアップフォルダ内】

2つのフォルダを作成しています

 

 

 

【「保管」フォルダ内】

こちらにCSVを格納したフォルダを都度、タイムスタンプを名前にして格納していきます。

 

 

 

■モジュールのVBA

Public Sub バックアップ実行()

'①バックアップ実行選択*****************************************************************
If vbNo = MsgBox("バックアップを実行しますか?", vbYesNo, "確認") Then
Exit Sub
Else
End If

'②テーブルエクスポート*****************************************************************
DoCmd.TransferText acExportDelim, , "T_商品", "C:\バックアップ\一時\shohin.csv", True
DoCmd.TransferText acExportDelim, , "T_店舗", "C:\バックアップ\一時\tenpo.csv", True

'③バックアップフォルダに日付時刻をつけてフォルダごとコピーする*************************
Dim BUCstr
Dim BUSstr
Dim newdatestr

BUCstr = "C:\バックアップ\一時"
BUSstr = "C:\バックアップ\保管"
newdatestr = Format(Now(), "yyyymmdd_hhnnss")
Dim objfso
Set objfso = CreateObject("Scripting.FileSystemObject")
objfso.CopyFolder BUCstr, BUSstr & "\" & newdatestr & "_BU_csv"

'④一時データフォルダ内のファイルを削除する*********************************************
objfso.DeleteFile "C:\バックアップ\一時\shohin.csv"
objfso.DeleteFile "C:\バックアップ\一時\tenpo.csv"
Set objfso = Nothing

'⑤バックアップ完了メッセージ***********************************************************
MsgBox "バックアップを完了しました。", , "情報"
End Sub

 

 

 

■順番に見ていきましょう

①バックアップ実行選択

初めにバックアップをするorしないの選択を確認します。

vbNo = いいえ を選択した時はExit Subとなります。

 

 

 

②テーブルエクスポート

構文「DoCmd.TransferText acExportDelim」を使用して、

「T_商品」テーブルを「shohin.csv」ファイルに出力

「T_店舗」テーブルを「tenpo.csv」ファイルに出力

最後に「True」としてあるので、1行目にカラム(列)名を出力しています。

 

 

 

 

③バックアップフォルダに日付時刻をつけてフォルダごとコピーする

ここで特に重要なのは最後の下記の行ですね。

「objfso.CopyFolder BUCstr, BUSstr & "\" & newdatestr & "_BU_csv"」

変数「newdatestr」がタイムスタンプで、「_BU_csv」をフォルダ名の最後につけてフォルダをコピーしています。

 

 

 

④一時データフォルダ内のファイルを削除する

Cドライブ内の「一時」フォルダに作成したCSVファイルを削除します。

 

 

⑤バックアップ完了メッセージ

メッセージボックスで完了を知らせて、プログラムの終了です。

 

 

 

最後に

以前はバックアップ方法が分らなくて、ACCESSそのものをコピーしていたのですが、容量が大きくなりすぎるのでCSVで残す方法に変えました。

さらにフォルダに日時をつけることでいつのデータかも一目で分かるし、復元もしやすいと思うので、ご活用ください。

 

 


 

www.omake-zakki.com

www.omake-zakki.com

www.omake-zakki.com

www.omake-zakki.com