VBAを使用して、次のことができます。
1.) こちら を確認します。基本的にこれを行います:
Function FileExists(ByVal FileToTest As String) As Boolean
FileExists = (Dir(FileToTest) <> "")
End Function
必要なさまざまなエラー処理を理解するためにあなたに任せますが、これらは私が検討しているエラー処理のものです:
2.)ファイルの削除方法。 this。 を見てください。基本的に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としてマークし、必要に応じて誰でも修正できるようにします。
Brettskiの答えをコーディングする別の方法は、そうでなければ完全に同意しますが、
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にコマンドDEL "C:\ TEMP\scratchpad.txt"/Fを起動させるには、VBA.Shellを使用してコマンドプロンプト非同期を実行します。
シェル "DEL"&chr(34)&strPath&chr(34)& "/ F"、vbHide
ファイル名を囲む二重引用符(ASCII文字34)に注意してください。ネットワークパス、またはスペースを含む長いファイル名があると仮定しています。
それが大きなファイルであるか、それが遅いネットワーク接続にある場合、火と忘れは行く方法です。もちろん、これが機能するかどうかはわかりません。しかし、すぐにVBAを再開します。これは、ネットワークを待つよりも良い場合があります。
Scripting.Runtimeライブラリへの参照を設定してから、FileSystemObjectを使用できます。 DeleteFileメソッドとFileExistsメソッドがあります。
MSDNの記事 here を参照してください。