Why Isn't This Working?

E

Eric G

Snippet of code from my routine to check file permissions is below.
Represents my crude attempt to check whether or not I have permission to
access a file.

For Each oFile In Dir.Files
fileIsOkay = False
On Error GoTo Bad_Permission
Set ts = oFile.OpenAsTextStream '<<== Blows up here on second bad
file
ts.Close
Set ts = Nothing
On Error GoTo 0 '<<== This should reset the error, right?
fileIsOkay = True ' If we got here, I have access to the file
Bad_Permission:
On Error GoTo 0
tName = oFile.Name
If (Not fileIsOkay) Then
tName = tName & ": PERMISSION PROBLEM"
Else
tName = tName & ": OKAY"
End If
Debug.Print tName
Next oFile

I loop through all files in the given (test) folder. I know there are a
couple of files that I don't have permissions to view. When the first one is
checked using the code above, it triggers the On Error and gives the
appropriate message. When I hit the second "bad" file, I get "Run-time error
'70': Permission denied" instead. The On Error code no longer works. What
am I doing wrong?

Thanks in advance,

Eric
 
E

Eric G

Thanks Jim!

I did a small test - I looked at the Err object while I ran my code. When
it hit the first bad file, its value became 70. When the code ran "On Error
Goto 0", Err reset to 0. That seems to indicate that it does clear the
error. However, my code still didn't work...

I made one small change to yours - at the end I had to add "Set ts =
Nothing", but otherwise your code worked and fills my need, which is to find
all the files that have permission issues.

Eric
 
H

Harald Staff

Hi

On Error Goto 0
does not clear the error, it clears previous instructions on what to do when
errors happen. Clear with Err.Clear like this:

Sub test()
On Error Resume Next
MsgBox 4 / 0
MsgBox "Error is: " & Error
Err.Clear
MsgBox "Error is: " & Error
End Sub

HTH. Best wishes Harald
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top