dポイントプレゼントキャンペーン実施中!

すいません。教えてください。

更新処理を行うmdbファイルを作成しました。
正常に処理が終了した場合、その実行したmdbファイルごと削除するようにしたいのですが、方法はありますか?
ACCESS2003 VBAにて作成しいました。

よろしくお願いします。

A 回答 (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
    • good
    • 0
この回答へのお礼

遅くなってしまって申し訳ございません。
たしかにこの方法なら削除できました。
本当に助かりました。ありがとうございます!

お礼日時:2008/07/17 09:50

自殺マクロはExcelだと可能ですが、Accessでは聞いたことがありません。


仮にないとすると、No.1さんの書かれているように外から削除させるしかないのですが、以下の方法なら痕跡なく削除できるかもしれません。
1)Accessには「閉じるときに同じフォルダにあるvbsファイルがあれば削除する」というイベントマクロを仕込んでおく
2)更新正常終了時に、Accessから以下の内容のvbsファイルを同じフォルダに出力する
 「今開いているAccessをGetObjectして閉じてから、削除する」
3)AccessからShellでvbsを実行する
vbs実行中でもvbsファイルは削除できますから、お互いを削除しあって最後はなくなるというやり方です。

Excelだとうまく消えますが、Accessで実際に試してはいないです。
    • good
    • 0

> 正常に処理が終了した場合、その実行した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」は削除できずに残ります(汗)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す