VBA を使用して、次のことができます。
- ファイルが存在するかどうかをテストし、存在する場合は、
- 消して?
1.) こちらをご確認ください。基本的にこれを行います:
Function FileExists(ByVal FileToTest As String) As Boolean
FileExists = (Dir(FileToTest) <> "")
End Function
必要なさまざまなエラー処理を理解するのはあなたに任せますが、これらは私が検討しているエラー処理の一部です。
2.) ファイルを削除する方法。これを見てください。 基本的には Kill コマンドを使用しますが、ファイルが読み取り専用になる可能性を考慮する必要があります。ここにあなたのための機能があります:
Sub DeleteFile(ByVal FileToDelete As String)
If FileExists(FileToDelete) Then 'See above
' First remove readonly attribute, if set
SetAttr FileToDelete, vbNormal
' Then delete the file
Kill FileToDelete
End If
End Sub
繰り返しますが、エラー処理はあなたに任せます。これらは私が考慮したいことです:
これは、ディレクトリとファイルで異なる動作をする必要がありますか? ユーザーは、ディレクトリを削除したいことを明示的に示す必要がありますか?
コードで読み取り専用属性を自動的にリセットするか、または読み取り専用属性が設定されていることをユーザーに何らかの形で示す必要がありますか?
編集:この回答をコミュニティ wiki としてマークして、必要に応じて誰でも変更できるようにします。
ブレットスキーの答えをコーディングする別の方法は、それ以外の場合は完全に同意する可能性があります
With New FileSystemObject
If .FileExists(yourFilePath) Then
.DeleteFile yourFilepath
End If
End With
効果は同じですが、変数宣言が少なくなります (つまり、まったくありません)。
FileSystemObject は非常に便利なツールであり、慣れる価値があります。他の何よりも、テキスト ファイルの書き込みについては、実際には従来の代替方法よりも高速な場合があり、これに驚く人もいるかもしれません。(少なくとも私の経験では、YMMV)。
私はおそらくこれに怒りを覚えるでしょうが、あなたがそれを削除しようとしているのであれば、存在をテストするポイントは何ですか?私の主なペットのおしっこの1つは、「ファイルを削除できませんでした。存在しません!」などのエラーダイアログをスローするアプリです。
On Error Resume Next
aFile = "c:\file_to_delete.txt"
Kill aFile
On Error Goto 0
return Len(Dir$(aFile)) > 0 ' Make sure it actually got deleted.
そもそもファイルが存在しない場合、ミッションは達成されました!
以下は、ファイルの存在をテストしてから削除するために使用できます。
Dim aFile As String
aFile = "c:\file_to_delete.txt"
If Len(Dir$(aFile)) > 0 Then
Kill aFile
End If
VB では、通常Dir
、ファイルのディレクトリを検索します。空白でない場合は存在しKill
、ファイルを削除するために使用します。
test = Dir(Filename)
If Not test = "" Then
Kill (Filename)
End If
Scripting.Runtimeライブラリへの参照を設定してから、FileSystemObjectを使用します。
Dim fso as New FileSystemObject, aFile as File
if (fso.FileExists("PathToFile")) then
aFile = fso.GetFile("PathToFile")
aFile.Delete
End if
ここにヒントがあります。ファイル名を再利用していますか、それともすぐに削除する必要があることを計画していますか?
いいえ?
VBA.Shell を使用して、コマンド プロンプトからコマンド DEL "C:\TEMP\scratchpad.txt" /F を非同期的に起動するように VBA を取得できます。
シェル "DEL " & chr(34) & strPath & chr(34) & " /F ", vbHide
ファイル名が二重引用符 (ASCII 文字 34) で囲まれていることに注意してください。ネットワーク パス、またはスペースを含む長いファイル名があると想定しています。
ファイルが大きい場合、またはネットワーク接続が低速の場合は、ファイア アンド フォーゲットが最適です。もちろん、これが機能したかどうかを確認することはできません。ただし、VBA をすぐに再開すると、ネットワークを待つよりもこの方がよい場合があります。
Scripting.Runtime ライブラリへの参照を設定してから、FileSystemObject を使用できます。これには、DeleteFile メソッドと FileExists メソッドがあります。
こちらの MSDN 記事を参照してください。