フォルダとそのフォルダの中に入っているデータを消したいのですが、
最後のフォルダを削除するところで、エラーがでてしまいます。
どなたかご教授いただけると幸いです。
よろしくお願いします。
Const BAK = "BAK"
Const TMP = "TMP"
Sub aaa()
Dim sDestination As String
sDestination = "D\catdb\usr\temp01"
Dim sBAKPath As String
Dim sTMPPath As String
sBAKPath = sDestination & "\" & BAK
sTMPPath = sDestination & "\" & TMP
Dim BAKFolder As String
Dim TMPFolder As String
BAKFolder = Dir(sBAKPath, vbDirectory)
TMPFolder = Dir(sTMPPath, vbDirectory)
Dim iFile1 As String
Dim iFile2 As String
iFile1 = Dir(sBAKPath & "\" & "*.*")
iFile2 = Dir(sTMPPath & "\" & "*.*")
If BAKFolder <> "" Then
If iFile1 <> "" Then
Kill sBAKPath & "\" & "*.*"
End If
End If
RmDir (sBAKPath)
If TMPFolder <> "" Then
iFile2 = Dir(sTMPPath & "\" & "*.*")
If iFile2 <> "" Then
Kill sTMPPath & "\" & "*.*"
End If
End If
RmDir (sTMPPath) ←ここでエラー"Path/File access error"
End Sub
RmDir 関数だと、ディレクトリ内が空でないと削除されません。
RmDirを使うのをやめて、下記サイトのを使うと
フォルダとそのフォルダの中も消せます。
http://jeanne.wankuma.com/tips/vb6/directory/delete.html
http://jeanne.wankuma.com/tips/vb.net/directory/delete.html
やじゅさんありがとうございます。
http://jeanne.wankuma.com/tips/vb6/directory/delete.html
こちらを参考にさせていただきました。
FileSystemObjectオブジェクトは、Microsoft Scripting Runtimeのライブラリを参照させないとできないんですね。
チェックを入れてやってみたら無事にフォルダを消すことができました。
ただこちらの環境がライブラリ設定の追加を許す環境か、確認しないとわからないので、現在検証しています。
ありがとうございました^^
申し遅れましたが、VBで質問させていただいておりますが、こちらの環境がVBAになります。
なのでMicrosoft Scripting Runtimeのチェックが外れている状態がデフォルト設定となります。
他の端末でマクロを動かすと、Microsoft Scripting Runtimeのチェックが外れている状態である可能性が高いため、チェックをいれる作業を要します。
※チェックをはずした状態で動かした場合にエラーとなりました。
現在の仕様では、Microsoft Scripting Runtimeのチェックを入れる作業はなしの方向で、考えなければいけない状況になるかもしれません。
初心者のため、参照設定を入れていいものかどうかがわからないので、
申し訳ないですが・・・
引き続き検証を続けますが、他にいい案があれば、アドバイスをお願いします。
参照設定を入れない場合は、CreateObjectを使うといいですよ
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
早速の返信ありがとうございます^^
やじゅさんのアドバイスで問題なく動作しました!
言われただけでまだ理解はできてないですが、助かりました。
マクロやりだして、3ヶ月くらいですが、知らないことだらけだし、
こちらのVBAがネットなどにあまり情報がないので、毎日試行錯誤です。
質問してよかったです。
また困ったときはよろしくお願いします。
ありがとうございました。