電子書籍の厳選無料作品が豊富!

こんにちは!
Killでファイルを削除すると、ゴミ箱に入らずに削除されてしまいます
ゴミ箱に入れたいのですが、どうすればいいですか?
kill ファイルのパス

A 回答 (4件)

#1さんの示していただいたサイトを参考にサブルーチン化して利用すれば簡単。



新規のモジュールを追加して下記をコピペ

--------この下から--------
''ごみ箱に送るためのAPI
Private Declare Function SHFileOperation Lib "shell32.dll" _
(lpFileOp As SHFILEOPSTRUCT) As Long

''SHFileOperation関数に渡すユーザー定義型
Private Type SHFILEOPSTRUCT
hwnd As Long ''ウィンドウハンドル
wFunc As Long ''実行する操作
pFrom As String ''対象ファイル名
pTo As String ''目的ファイル名
fFlags As Integer ''フラグ
fAnyOperationsAborted As Long ''結果
hNameMappings As Long ''ファイル名マッピングオブジェクト
lpszProgressTitle As String ''ダイアログのタイトル
End Type


Private Const FO_DELETE = &H3 '削除
Private Const FOF_NOCONFIRMATION = &H10 '確認なし
Private Const FOF_ALLOWUNDO = &H40 ''ごみ箱に送る

Sub DeleteFile(Target As String)
Dim SH As SHFILEOPSTRUCT, re As Long
With SH
.wFunc = FO_DELETE
.pFrom = Target
.fFlags = FOF_ALLOWUNDO Or FOF_NOCONFIRMATION
End With
re = SHFileOperation(SH)
If re <> 0 Then MsgBox "削除に失敗しました", vbExclamation
End Sub

--------この上まで--------

使うときは

DeleteFile ファイル名

の一行で、ごみ箱に送れます。

削除前に確認が必要なら

.fFlags = FOF_ALLOWUNDO Or FOF_NOCONFIRMATION



.fFlags = FOF_ALLOWUNDO

に変更してください。
    • good
    • 0

#1です。



> 思っていたよりはるかに難しそうです
> あつかましいようですが、数行ですむ方法はないでしょうか?

難しく考える必要はありません。
既に #2さんがサブルーチンの例を挙げてますので、#2さんの「この下から」「この上まで」の間のコードを標準モジュールの一番上にコピペしておきます。
その上でこれまで Kill を使っていた部分を DeleteFile に置き換えれば良いだけだと思います。


'標準モジュール
'この下から
''ごみ箱に送るためのAPI
  ・
  ・
  ・
'この上まで

Sub 今までのコード()
  ' kill "削除したいファイルのフルパス"
  DeleteFile "削除したいファイルのフルパス"
End Sub
    • good
    • 0

こんばんは。



>Killでファイルを削除すると、ゴミ箱に入らずに削除されてしまいます

最初に、完全削除に迷うものは、マクロで削除するというのは、VBAのコードのコンセプトとして、上手くありません。

Rename(VBAでは、Name) して、ファイル名の前に、$ をつけておくか、バックアップフォルダを作っておいて、COPY で、そちらに送って、その後で、KILLで削除すればよいのではありませんか? 私は、いつもは、ファイル名に $ をつけています。それが溜まった時点で消せばよいです。もちろん、フリーソフトウェアの「窓の手」などで一括削除も出来ます。
    • good
    • 0

この回答への補足

回答ありがとうございます!
URLからサイトを見ましたが・・・思っていたよりはるかに難しそうです
あつかましいようですが、数行ですむ方法はないでしょうか?

補足日時:2006/11/18 15:50
    • good
    • 0

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