Hi

I am trying to run the code below and get

Exception From Hresult 0x800A0046
(CTL_E_PermissionDenied) error only on Button 2. 

Button 1 does what it is supposed to ie remove all files found in the folders that are older than today. Button 2 should remove all files regardless but it generates the Exception.

Here is the code

'Button 1

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Dim fso
        Dim pathstring
        Dim file
        Dim VideoFolders(4) As String
        Dim fldr
        Dim i As Integer

        ' initialization

        VideoFolders(0) = "C:\001310da9f32\"
        VideoFolders(1) = "C:\001310daa2fc\"
        VideoFolders(2) = "C:\001310daa22a\"
        VideoFolders(3) = "C:\001310db0363\"

        'Initialize FileSystemObject

        fso = CreateObject("Scripting.FileSystemObject")


        'Initialize While Loop Variable
        i = 0

        While i < 4

            For Each fldr In VideoFolders(i)

                pathstring = fso.GetAbsolutePathName(VideoFolders(i))

                If fso.FolderExists(pathstring) = True Then

                    For Each file In fso.GetFolder(pathstring).files
                        If DateValue(file.datelastModified) < Date.Today Then
                            fso.DeleteFile(file)

                        End If

                    Next

                Else
                    MsgBox("Folder does not exist")
                End If

            Next
         i=i+1
        End While

And

'Button 2

    End SubPrivate Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click



        Dim fso
        Dim pathstring
        Dim file
        Dim VideoFolders(4) As String
        Dim fldr
        Dim i As Integer

        ' initialization

        VideoFolders(0) = "C:\001310da9f32\"
        VideoFolders(1) = "C:\001310daa2fc\"
        VideoFolders(2) = "C:\001310daa22a\"
        VideoFolders(3) = "C:\001310db0363\"

        'Initialize FileSystemObject

        fso = CreateObject("Scripting.FileSystemObject")


        'Initialize While Loop Variable
        i = 0

        While i < 4

            For Each fldr In VideoFolders(i)

                pathstring = fso.GetAbsolutePathName(VideoFolders(i))

                If fso.FolderExists(pathstring) = True Then

                    For Each file In fso.GetFolder(pathstring).f
                            fso.DeleteFile(file)


                    Next

                Else
                    MsgBox("Folder does not exist")
                End If

            Next
           i=i+1
        End While

        MsgBox("Action Completed Successfully")

    End Sub

Thanks

Edited 3 Years Ago by mike_2000_17: Fixed formatting

'The following line is the problem. The .f is not a valid member.
For Each file In fso.GetFolder(pathstring).f

Why not use the following instead of your approach

For Each sFolder As String In VideoFolders
If My.Computer.FileSystem.DirectoryExists(sFolder) Then
For Each sFile As String In My.Computer.FileSystem.GetFiles(sFolder)
System.IO.File.Delete(sFile)
Next
End If
Next

This article has been dead for over six months. Start a new discussion instead.