如果我将该变量切换为任何其他变量,包括文件删除循环中使用的
s
,它工作正常。使用我用来删除发送到 WriteToLog 函数的文件夹 (sSubFolder
) 的变量,它会产生所示的错误。我到底错过了什么?
oFSO.deletefile s, True
if Err then
WriteToLog("-- Error deleting file """ & s & """. Err.number = """ & Err.Number & """; Err.Description = """ & Err.Description & """")
else
WriteToLog("-- File """ & s & """ succesfully deleted")
end if
next
if not sSubFolder = sRootFolder then
oFSO.deletefolder sSubFolder, True
if Err then
WriteToLog("-- Error deleting folder """ & sSubFolder & """. Err.number = """ & Err.Number & """; Err.Description = """ & Err.Description & """")
else
Line 109 WriteToLog("-- Folder """ & sSubFolder & """ succesfully deleted")
end if
Option Explicit
Main
Sub Main()
Const sRootFolder = "C:\Test"
Const sSubFolder = "C:\Test\Test1"
Const s = "C:\Test\Test1\Test.txt"
Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")
WriteToLog GetDeleteFileInfo(fso, s, True)
If sSubFolder <> sRootFolder Then
WriteToLog GetDeleteFolderInfo(fso, sSubFolder, True)
Else ' is root folder, e.g.:
MsgBox "Cannot delete root folder """ & sRootFolder & """!", vbExclamation
End If
End Sub
Function GetDeleteFileInfo(fso, FilePath, DeleteReadOnly)
Dim ErrNumber, ErrDescription
On Error Resume Next
fso.DeleteFile FilePath, DeleteReadOnly
ErrNumber = Err.Number
ErrDescription = Err.Description
On Error GoTo 0
'MsgBox ErrNumber & vblf & vblf & ErrDescription, vbCritical
If ErrNumber = 0 Then
GetDeleteFileInfo = "-- File """ & FilePath _
& """ succesfully deleted"
Else
GetDeleteFileInfo = "-- Error deleting file """ & FilePath _
& """. Err.number = """ & ErrNumber _
& """; Err.Description = """ & ErrDescription & """"
End If
End Function
Function GetDeleteFolderInfo(fso, FolderPath, DeleteReadOnly)
Dim ErrNumber, ErrDescription
On Error Resume Next
fso.DeleteFolder FolderPath, DeleteReadOnly
ErrNumber = Err.Number
ErrDescription = Err.Description
On Error GoTo 0
'MsgBox ErrNumber & vblf & vblf & ErrDescription, vbCritical
If ErrNumber = 0 Then
GetDeleteFolderInfo = "-- Folder """ & FolderPath _
& """ succesfully deleted"
Else
GetDeleteFolderInfo = "-- Error deleting folder """ & FolderPath _
& """. Err.number = """ & ErrNumber _
& """; Err.Description = """ & ErrDescription & """"
End If
End Function
' Just for testing!
Sub WriteToLog(Info)
MsgBox Info, vbInformation, "Testing Only"
End Sub