![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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 サブフォームでの選択行...
-
(ACCESS)条件に応じて、テキ...
-
ACCSESS2013VBA フォームのレコ...
-
Access2000、これはいったい・...
-
初心者です。accessで請求書を...
-
アクセスで サブフォームの表...
-
Accessのサブフォーム内で連続...
-
Access2000 サブフォームのReco...
-
googleフォームでインストール...
-
ACCESSでのデータ削除について
-
サブフォームでのダブルクリッ...
-
Access 複数フォームを...
-
access サブフォームにリストを...
-
ACCESSでサブフォームの...
-
アクセスVBA画面のスクロールバー
-
サブフォームが見えなくなる。
-
フォームが閉じる機能を無くしたい
-
強制終了になってしまいます
-
在庫管理の仕組みで質問
-
Accessで、サブフォームのある...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access サブフォームでの選択行...
-
Access2000、これはいったい・...
-
Accessのサブフォームから値を...
-
Access 複数フォームを...
-
ACCSESS2013VBA フォームのレコ...
-
(ACCESS)条件に応じて、テキ...
-
Access2000 サブフォームのReco...
-
access サブフォームにリストを...
-
アクセスでサブフォームのレコ...
-
サブフォームが見えなくなる。
-
サブフォームのデータを保存す...
-
AccessのFormのみをスクリーン...
-
レコードセットで得た結果をサ...
-
Accessでのフォーム表示がうま...
-
サブフォームの切り替え方を教...
-
2回目に画面のレコードセットの...
-
ACCESSでfilterとorderbyについて
-
Accessで、一覧からクリックし...
-
Accessのサブフォーム内で連続...
-
googleフォームでインストール...
おすすめ情報