• ベストアンサー

ExcelVBA ファイルを削除する

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

  • jobvba
  • お礼率60% (166/274)

質問者が選んだベストアンサー

  • ベストアンサー
noname#22650
noname#22650
回答No.2

#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 に変更してください。

その他の回答 (3)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.4

#1です。 > 思っていたよりはるかに難しそうです > あつかましいようですが、数行ですむ方法はないでしょうか? 難しく考える必要はありません。 既に #2さんがサブルーチンの例を挙げてますので、#2さんの「この下から」「この上まで」の間のコードを標準モジュールの一番上にコピペしておきます。 その上でこれまで Kill を使っていた部分を DeleteFile に置き換えれば良いだけだと思います。 '標準モジュール 'この下から ''ごみ箱に送るためのAPI   ・   ・   ・ 'この上まで Sub 今までのコード()   ' kill "削除したいファイルのフルパス"   DeleteFile "削除したいファイルのフルパス" End Sub

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 >Killでファイルを削除すると、ゴミ箱に入らずに削除されてしまいます 最初に、完全削除に迷うものは、マクロで削除するというのは、VBAのコードのコンセプトとして、上手くありません。 Rename(VBAでは、Name) して、ファイル名の前に、$ をつけておくか、バックアップフォルダを作っておいて、COPY で、そちらに送って、その後で、KILLで削除すればよいのではありませんか? 私は、いつもは、ファイル名に $ をつけています。それが溜まった時点で消せばよいです。もちろん、フリーソフトウェアの「窓の手」などで一括削除も出来ます。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1
jobvba
質問者

補足

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

関連するQ&A

  • ファイルを削除する方法

    VB6です 種類:システムファイル 属性:隠しファイル、読み取り専用 上記の条件に該当する一部のファイルを変更するためにいったん削除することを考えたので、killを使ってファイルを指定したのですがファイルが見つかりません(*1)と出ましたがパスを確認しても削除できません。 *1正確には 実行時エラー'53': ファイルが見つかりません。 killを使っても削除できない場合何を使ったら良いのでしょうか。 どうかご回答のほどよろしくお願いいたします。

  • ファイル削除

    ファイルを削除しようとしても、 『…を削除できません:指定されたファイルが見つかりません。 パスとファイル名を確認してください。』 って表示が出るだけで、ずっとごみ箱にアイコンが残ったままで困っています。 どうにかして完全に削除したいのですが、どうしたらよいのでしょうか。

  • ゴミ箱からファイルを削除できない

    xxxxx(ファイル名)を削除できません。指定されたファイルが見つかりません。パスとファイル名を確認してください。」と言うメッセージが出てゴミ箱からファイルを削除できないのです。プロパティを見るとゼロバイト、アーカイブとなっています。。指定されたファイルが見つかりません。パスとファイル名を確認してください。」と言うメッセージが出てゴミ箱からファイルを削除できないのです。プロパティを見るとゼロバイト、アーカイブとなっています。

  • ゴミ箱の一時ファイルが削除出来ない

    お世話様です。 ゴミ箱に入れた一時ファイルが削除出来ません。 ハードディスクの Cドライブ.windowsフォルダーの中にある一時ファイルをゴミ箱に移しましたがゴミ箱からの削除を試みたところ、下記の様なエラーメッセージが出て削除出来ません。一時ファイルは削除出来ないものなのでしょうか   「afdを削除できません。指定されたパスが見つかりません。   パスを確認して下さい」

  • .NETでファイルを削除したいのですが

    .NETを使って簡単な開発をしています kill("C:\aaa\*.txt")のようにパス名・ファイル名を 指定してファイルを削除しようとしていますが、 うまくいきません。 また、ファイルの種類がログファイルなどの場合も 同じようにできるのでしょうか。

  • ファイルの削除ができない

    外付けHDD内のファイル、フォルダが、全て削除できません。 エラーメッセージ:ファイルまたはフォルダの削除エラー (ファイル名)を削除できません。指定されたパスが見つかりません。パスを確認して下さい。 ・右クリック→削除、切り取りしてゴミ箱にコピー、共にできません。 ・名前の変更や、動画の再生など、問題なく行えます。 ・他のドライブ(Dなど)に切り取り、コピーできます。 ・他のPCに接続した際は問題ありません。 ・ごみ箱のプロパティでは、問題の外付けHDDが表示されています。 ・環境 Windows XP SP2 エラーメッセージ通りパスの問題なんだと思うのですが、どうしていいのか分りません。お詳しい方、どうぞよろしくお願い致します。 もうお手上げ!助けて下さい!

  • ファイルを削除できません。

    ゴミ箱を空にしようとすると ----------------------------------------------- CAIR9QF. を削除できません。指定されたファイルが見つかりません。 パスとファイル名を確認してください。 ----------------------------------------------- というメッセージが出てできませんでした。 一つづつ試し、あるフォルダが削除できないのがわかりそれだけゴミ箱から出すと空にできました。 が、外に出してもそのフォルダは削除できません。 このフォルダは以前、ネット銀行かクレジットカードのご利用明細書をダウンロードして、入れておいたフォルダですが、現在は全て削除して何も入っていません。 ファイルオプションで「保護されたオペレーシングシステムファイルを表示する」よう設定すると、 半透明のファイルが見えるようになりましたがやはり削除できません。 再起動やセーフモードでの起動も試してみましたが、 削除できません。 どうしたらよいでしょうか?

  • ごみ箱ファイルの削除方法

    WindowsServer2003のごみ箱のファイルが消せなくなりました。 コマンドから削除できるという意見を頂いたのですが、方法がわかりませんので教えて下さい。 ごみ箱の削除機能では、 「XXXXXを削除できません。指定されたファイルがみつかりません。 パスとファイル名を確認して下さい。」 と表示されます。 コマンドから、削除するには、どのようにするのでyでしょうか?ごみ箱の初期化をすることになるのでしょうか。方法も、対象のフォルダもわかりませんので、宜しくお願いします。 ※先ほど書き込み途中に誤って投稿してしまいました。  スタッフに削除お願いしています。

  • ファイルを削除したい

    VBでACCESSのデーターベースを使用しているとき dbname.ldb(dbname ; database名)が作られます。このファイルをVBの終了時点もしくは終了直後 までには削除したいのですがどうすればよいでしょうか。  "kill dbname.ldb" では 実行時エラー 75: パス名が無効です

  • 存在しないファイルを削除したい

    WindowsXPを利用している者です。 削除しようとすると、「このファイルは存在しません.....」というようなことが表示され、削除できないファイル(写真)がいくつかあります。そのファイルのパスが存在しないようです。そのファイルがもともと存在していたフォルダを、消してしまったからだと思われます。そのファイルは、開くことはできませんが、検索すると必ず表示されます。サイズは0と表示されています。バックアップはありません。 このファイルを検索しても表示されないようにしようと、さまざまな手を打ってきましたが、どんなことをしても完全に削除することができません。ゴミ箱に入れて、ゴミ箱をからにするなどしても、検索すると必ずまた出てきます。ネットで紹介されているやりかた(コマンドクロンプトを使う、ファイルを置き換えて削除など)もやってみましたが、消えませんでした。 このようなファイルは、完全に消すことはできないのでしょうか? 初心者で、詳しいことをあまり知りません。 どうかご存知の方がおられましたら、回答をよろしくお願いいたします。

専門家に質問してみよう