【保存版】2013年度発売全パチスロアプリ一覧(iPhone,iPad)

【Access】実行中のmdb(自分自身)をバックアップコピーする方法。

自分自身mdbバックアップコピー画面

はじめに。。。

*************************************
この記事は実行中のmdbをコピーするというちょっと危険な内容です。
シチュエーションによってはファイルが壊れてしまう場合もあるかもしれません。
自己責任でお願いします。
*************************************


と、前置きしたところで本題へ。

ACCESSでシステムを作るとなると、
プログラム用MDBとデータベースを分けるのが一般的です。

しかし、スタンドアロンで使うちょっとしたツールでは、
ひとつのmdb内にプログラムとデータを持たせることがあります。

この場合、mdbはどのようにバックアップすればよいのでしょうか?

VBA上から通常ファイルコピー時に使用する FileCopyメソッドを使用すると、
「70:書き込みできません。」というエラーが発生します。
自分自身をコピーすることはできないようです。

そこで、VBSCRIPTを使います。VBAからVBSCRIPTを呼出しVBSCRIPTからコピーします。

【検証環境】
Access:Access2003 SP3
OS:XP SP3

サンプルソースは以下のとおり。

【ソース】
Private Function fnc_データベースバックアップ()
'データベースバックアップ

On Error GoTo Err_Syori

Dim FSO As Object
Dim strCopyMoto As String
Dim strCopySaki_FileName As String
Dim strCopySaki As String

Set FSO = CreateObject("Scripting.FileSystemObject")

fnc_データベースバックアップ = 0 'NG

'コピー元フルパス
strCopyMoto = CurrentProject.FullName

'コピー先ファイル名
strCopySaki_FileName = Mid(Application.CurrentProject.Name, 1, Len(Application.CurrentProject.Name) - 4)
strCopySaki_FileName = strCopySaki_FileName & "_BACKUP.mdb"

'コピー先フルパス
strCopySaki = CurrentProject.Path & "¥" & strCopySaki_FileName

'ファイルコピー
FSO.CopyFile strCopyMoto, strCopySaki

Set FSO = Nothing

MsgBox "データベースをバックアップしました。ファイル名:" & strCopySaki_FileName, vbInformation, "バックアップ処理"

fnc_データベースバックアップ = 1 'OK

Exit Function

Err_Syori:
MsgBox Err.Number & ":" & Err.Description, vbCritical, "バックアップ処理"
End Function


【組み込み方法】
とりあえず、フォームを1個作ってそのフォームモジュールに上記ソースを貼り付けます。
次にフォーム上にコマンドボタンを設置しボタンのクリック時イベントに、
call fnc_データベースバックアップ
と記述し、バックアップ処理を呼び出して下さい。

【動作イメージ】
コマンドボタンをクリックするとmdbのあるフォルダ内に、
そのmdbをリネーム(_BACKUPをつける)してコピーします。
例えば、「秘密の人事考課資料.mdb」ファイルは、
「秘密の人事考課資料_BACKUP.mdb」としてコピーされます。


自分自身mdbバックアップコピー画面

何気に便利ですよ。不具合等あれば教えて下さい。
「秘密の人事考課資料」のネーミングセンスについての意見は不要です。(笑)


>>仕事の現場で即使える! Accessデータベース作成入門


>>Accessマクロ&VBAのプログラミングのツボとコツがゼッタイにわかる本


>>Accessクエリ&フォーム&レポート辞典―2010/2007対応 (Office2010 Dictionary Series)

[Google PR]

Twitterはじめました。プラプラ | Twitter

<< 【CakePHP】12/25発売予定 「PHPで作る携帯サイトデベロッパーズガイド」は買うべし。
【SQLServer】SQLServer2005 SQLを動的に組み立てて実行する。 >>

[関連エントリ 最新5]

[Google PR]


[最新エントリ 5]

>>トップページ
人気カテゴリ:AccessTips SQLServer CakePHP iPad
過去ログ(全記事一覧)

コメント
Application.CompactRepairのほうが最適かもできてよいのでは?
  • a
  • 2010/01/29 1:04 PM
>aさん
コメントありがとうございます。CompactRepairを使ってみたのですが、ダメでした。
helpによると、「このメソッドを呼び出すとファイルが排他的に開かれるので、
ソース ファイルがカレント データベースではなく、また別のユーザーが開いている
ファイルでないことが必要です」とのこと。
今回の場合は自分自身のコピーなので使えませんでした。
これが使えるとバックアップ&最適化が一発でできて非常に便利だったのですが。
情報ありがとうございました。
おかげさまで
排他によって とん挫していたことが実現できました。
ありがとうございます(スペシャル感謝)
  • akio
  • 2010/08/12 12:25 PM
>akio さま
お役に立てたようでよかったです。
コメントありがとうございました。

はじめまして。

コピー元フルパス
strCopyMoto = CurrentProject.FullName

'コピー先ファイル名
strCopySaki_FileName = Mid(Application.CurrentProject.Name, 1, Len(Application.CurrentProject.Name) - 4)
strCopySaki_FileName = strCopySaki_FileName & "_BACKUP.mdb"

'コピー先フルパス
strCopySaki = CurrentProject.Path & "¥" & strCopySaki_FileName

'ファイルコピー
FSO.CopyFile strCopyMoto, strCopySaki

初心者です。
フルパスとかの書き方がわかりません。

具体的に書いていただくと助かります。
お手すきの時にでもお願いします。
  • 2016/02/06 2:50 AM
コメントする(お気軽にどうぞ)









この記事のトラックバックURL
トラックバック
カテゴリー
プロフィール
お問い合わせ
Powered by NINJA TOOLS
links
recent comment
  • 【あまっちゃお】Amazon商品検索「あまっちゃお」プロジェクト始動。Ver00-06-00 β
    カメちゃん (07/31)
  • 【Access】あれ?DoCmd.RunCommand acCmdSaveRecordの内部仕様が変わった?
    花姉 (03/17)
  • 【Access】実行中のmdb(自分自身)をバックアップコピーする方法。
    亀 (02/06)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    管理人 (01/31)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    あ (01/31)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    K (11/13)
  • 【VAIOP】VaioXと両持ちできるものすっっごくマニアックなケース。当たり前ですが在庫限り。(笑)
    管理人 (08/04)
  • 【VAIOP】VaioXと両持ちできるものすっっごくマニアックなケース。当たり前ですが在庫限り。(笑)
    通りすがり (08/04)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    meale (07/01)
  • 【Windows10】OS名が10の理由はマーケティング上の理由である!MSはそんなに優しくないよ。
    小心者 (12/27)
recent trackback
  • 【Access】2003安全でない式がブロックされていませんとセキュリティーレベル。
    awgs Foundry (10/29)
  • 【VAIOtypeP】液晶保護シートは、新車のカバーではない。レイアウト社液晶/天板保護フィルムセットRT-VP1FS1
    XMLがキライ。 (04/09)
  • Vistaから、LinkStation(NAS)にアクセスできません。
    そのほかいろいろ (09/06)