Lista skyddade filer

Här demonstreras ett sätt att identifiera vilka arbetsböcker i en eller flera mappar som är lösenordskyddade, dvs arbetsböcker som kräver lösenord när de öppnas. Om proceduren körs i en mapp med många filer är processen ytterst långsam.

Noterbart är att tipset ej kan användas i version 97.

Option Explicit

 Sub Lista_LosenordSkyddade_Filer()

   '© 2002 Alla rättigheter XL-Dennis

   Dim wbBok As Workbook

   Dim wsBlad As Worksheet

    Dim i As Long, j As Long

 

   With Application

      .ScreenUpdating = False

      'För att förhindra Workbook_Open händelsen.

      .EnableEvents = False

   End With

 

   Set wbBok = ActiveWorkbook

   Set wsBlad = wbBok.Worksheets("Blad1")

 

   wsBlad.Columns(1).ClearContents

   j = 0

   With Application.FileSearch

      .NewSearch

      .LookIn = "E:\Arbetsmaterial\Diverse"

      'Ändra värdet till True om underliggande mappar också ska genomsökas.

      .SearchSubFolders = False

      .Filename = "*.xls"

      .FileType = msoFileTypeExcelWorkbooks

      If .Execute() > 0 Then

         For i = 1 To .FoundFiles.Count

            If Filskydd(.FoundFiles(i)) Then

               j = j + 1

               wsBlad.Cells(j, 1).Value = .FoundFiles(i)

            End If

         Next i

      Else

         MsgBox "Inga MS Excel-filer funna.", vbInformation

      End If

   End With

 

   With Application

      .EnableEvents = True

      .ScreenUpdating = True

   End With

End Sub  

Function Filskydd(stFilNamn As String) As Boolean

   '© 2002 Alla rättigheter XL-Dennis

   On Error GoTo Losenord

   'Här antas att ingen arbetsbok har lösenordet "AAAAA".

   Workbooks.Open Filename:=stFilNamn, Password:="AAAAA"

   ActiveWorkbook.Close False

   Exit Function

Losenord:

   Filskydd = True

End Function