No.2ベストアンサー
- 回答日時:
メッセージボックスは単なるサンプルであって、バックアップの方法ではありません。
何のサンプルかと言うと、Accessは起動時に起こるイベントを取得できますが、終了時を取得することができません。
ですので、終了時を取得する方法を載せたのです。
MDBをまるまるバックを取るなら、、、
メッセージボックスの変わりに、FileCopyを実行してあげると、ファイルの複製ができます。下のサンプルでも、バックアップを行うところに書いてありますので、参考にしてください。
ご要望のVBのサンプルも載せておきます。
これは、フォームを利用していますが、ループを行って待機をしておりますので、あまりお勧めできる方法ではないかもしれません。
Private Const PROCESS_QUERY_INFORMATION = &H400&
Private Const STATUS_PENDING = &H103&
Private Const STILL_ACTIVE = STATUS_PENDING
Private Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long
Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32.dll" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Private Sub Command1_Click()
Const DEF_FILE As String = "c:\test.mdb"
Dim strExeName As String * 1024
Dim lngInstance As Long
Dim strWk As String
Dim lngProcessId As Long
Dim lngProcessHandle As Long
Dim lngProcessExitCode As Long
On Error GoTo PGMEND
Me.Visible = True
'関連付いたEXEを取得
lngInstance = FindExecutable(DEF_FILE, vbNullString, strExeName)
If lngInstance < 33 Then
MsgBox "関連付いたEXEの取得失敗"
GoTo PGMEND
End If
'起動
strWk = Left$(strExeName, InStr(1, strExeName, vbNullChar) - 1) & " " & DEF_FILE
lngProcessId = Shell(strWk, vbNormalFocus)
If lngProcessId = 0& Then
MsgBox "起動失敗"
GoTo PGMEND
End If
'待機
lngProcessHandle = OpenProcess(PROCESS_QUERY_INFORMATION, 0&, lngProcessId)
Do
Call GetExitCodeProcess(lngProcessHandle, lngProcessExitCode)
Loop While lngProcessExitCode = STILL_ACTIVE
Call CloseHandle(lngProcessHandle)
'バックアップ
FileCopy DEF_FILE, DEF_FILE & "." & Format(Now, "yyyymmddhhnnss")
PGMEND:
Me.Visible = True
End Sub
No.1
- 回答日時:
方法1・ACCESS内部で処理する場合
※フォームを作成
フォーム名:ダミーフォーム
フォームの閉じる時にイベントを記載
Private Sub Form_Close()
MsgBox "フォームが閉じられます"
End Sub
※マクロ1作成
アクション:フォームを開く
フォーム名:ダミーフォーム
ビュー:フォームビュー
ウィンドウモード:非表示
※DBの起動時の設定でマクロ1を設定
※DBを再起動
※終了時に非表示のフォームが閉じられ、メッセージボックスが表示される
方法2・他のACCESSやVBなどから処理する場合
プログラムの知識が必要です。
必要であれば記載します。
この回答へのお礼
お礼日時:2002/12/04 14:47
丁寧な回答有り難うございます。メッセージボックスを表示すると何故バックアップ出来るのか分からないです。理由を教えて下さい。VBも宜しかったら、書いて下さい。宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) スキルシートのエクセルの項目に 2 2023/04/04 22:41
- iCloud procreateのバックアップ&データ移行について教えて下さい。 2 2022/05/09 15:00
- Windows 10 USBブートで内蔵HDDにアクセスしたら、Windows起動しなくなった 4 2023/03/30 16:31
- サーバー ファイルサーバのデータのバックアップ 1 2023/03/15 10:30
- ドライブ・ストレージ vhdxファイルからのデータの取り出し方 4 2023/06/14 23:53
- Windows 10 Windows10の不具合(Critical Process Died) 9 2022/04/19 21:11
- Excel(エクセル) 記録マクロのみでできますか? 7 2022/08/07 20:38
- その他(ソフトウェア) LDPlayerのマクロの編集方法を知りたい 1 2023/03/04 11:46
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access サブフォームでの選択行...
-
Access2000、これはいったい・...
-
ACCSESS2013VBA フォームのレコ...
-
access サブフォームにリストを...
-
Access2000 サブフォームのReco...
-
AccessのDoCmd.ApplyFilterの使...
-
Access VBA acCmdSelectRec...
-
アクセスで サブフォームの表...
-
Accessのサブフォーム内で連続...
-
[Access]複数のサブフォームで1...
-
別MDBのフォームを起動
-
保存されない理由は?accessvba
-
access 直前まで開いていたフォ...
-
Accessでのフォーム表示がうま...
-
AccessのFormのみをスクリーン...
-
レコードセットで得た結果をサ...
-
チェックボックスでレコードの...
-
Accessフィルターをかけたサブ...
-
Accessのサブフォームから値を...
-
Accessのコンボボックスに連動...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access サブフォームでの選択行...
-
Access 複数フォームを...
-
Access2000、これはいったい・...
-
ACCSESS2013VBA フォームのレコ...
-
Accessのサブフォームから値を...
-
access サブフォームにリストを...
-
(ACCESS)条件に応じて、テキ...
-
Accessで、一覧からクリックし...
-
Access2000 サブフォームのReco...
-
サブフォームが見えなくなる。
-
サブフォームでのダブルクリッ...
-
AccessのFormのみをスクリーン...
-
googleフォームでインストール...
-
2回目に画面のレコードセットの...
-
初心者です。accessで請求書を...
-
ACCESSでfilterとorderbyについて
-
ACCESSでサブフォームの...
-
アクセスで サブフォームの表...
-
レコードセットで得た結果をサ...
-
サブフォームのデータを保存す...
おすすめ情報