- ベストアンサー
処理終了後に実行したmdbファイルが削除できない
すいません。教えてください。 更新処理を行うmdbファイルを作成しました。 正常に処理が終了した場合、その実行したmdbファイルごと削除するようにしたいのですが、方法はありますか? ACCESS2003 VBAにて作成しいました。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.2です。一応ゴミプロ書いて確認してみたんですが、以下を投げるだけでも全部なくなりました。 Sub KillMDB() Dim sVBScript As String sVBScript = Left(CurrentDb.Name, Len(CurrentDb.Name) - InStr(1, StrReverse(CurrentDb.Name), "\", vbTextCompare) + 1) & "Killer.vbs" Close Open sVBScript For Output As #1 Print #1, "On Error Resume Next" Print #1, "Dim acApp, fso" Print #1, "Set acApp = GetObject(, ""Access.Application"")" Print #1, "acApp.Quit" Print #1, "Set acApp = Nothing" Print #1, "Set fso = CreateObject(""Scripting.FileSystemObject"")" Print #1, "fso.DeleteFile """ & CurrentDb.Name & """, True" Print #1, "fso.DeleteFile """ & sVBScript & """, True" Print #1, "Set fso = Nothing" Close #1 rc& = Shell("CScript " & sVBScript, vbHide) End Sub
その他の回答 (2)
- jamshid6
- ベストアンサー率88% (591/669)
自殺マクロはExcelだと可能ですが、Accessでは聞いたことがありません。 仮にないとすると、No.1さんの書かれているように外から削除させるしかないのですが、以下の方法なら痕跡なく削除できるかもしれません。 1)Accessには「閉じるときに同じフォルダにあるvbsファイルがあれば削除する」というイベントマクロを仕込んでおく 2)更新正常終了時に、Accessから以下の内容のvbsファイルを同じフォルダに出力する 「今開いているAccessをGetObjectして閉じてから、削除する」 3)AccessからShellでvbsを実行する vbs実行中でもvbsファイルは削除できますから、お互いを削除しあって最後はなくなるというやり方です。 Excelだとうまく消えますが、Accessで実際に試してはいないです。
- DexMachina
- ベストアンサー率73% (1287/1744)
> 正常に処理が終了した場合、その実行したmdbファイルごと削除 すみません、「実行したmdbファイルごと」の意味を取り切れていないので、 場合分けして回答させて戴きます。 1)『更新処理を行う「aaa.mdb」、更新の対象「bbb.xxx」、更新により複製される 「ccc.xxx」の3つのファイルがあって、削除するのは「bbb.xxx」』の場合 (または、「bbb.xxx」は直接更新され、「ccc.xxx」は作成されない場合): 更新処理が終了して、「bbb.xxx」の参照などを一切行っていない状態なら、 「Kill」などで削除できます。 http://www.tsware.jp/tips/tips_303.htm http://www.tsware.jp/tips/tips_113.htm 2)『ファイルの構成は上記の3つがあり、「bbb.xxx」と同時に「aaa.mdb」 も削除する』の場合: 実行中のmdbファイルは削除できないと思いますので(多分(汗))、「aaa.mdb」 によって「aaa.mdb」自体を削除することはできません。 「aaa.mdb」を削除したい場合は、それを削除するための「ddd.mdb」を作り、 更新処理の最後にそれを起動させるしかないと思います。 なお、「aaa.mdb」が確実に終了されている状態にするため、FormのTimer イベントを利用するなどして、起動してから実際に削除を行うまでの間に タイムラグを生じさせる必要があります。 ・・・この場合、「ddd.mdb」は削除できずに残ります(汗)
お礼
遅くなってしまって申し訳ございません。 たしかにこの方法なら削除できました。 本当に助かりました。ありがとうございます!