Ricerca file con password



  • Ricerca file con password
    di riccardo57 (utente non iscritto) data: 25/07/2014 11:12:46

    Buongiorno,
    ho una serie di file, alcuni protetti con password (uan password diversa per ogni file), altri realizzati in precedenza senza password.

    Vorrei proteggere solo i file senza password: quindi il problema è verificare se un file è protetto o meno e nel secondo casso applicare una password (spezzone di codice già realizzato).

    Ho provato a utilizzare la proprietà "haspassword", ma mi sembra che funzioni solo con Activeworkbook.haspassword.
    Come devo fare se voglio utilizzare questa proprietà su di un file non ancora aperto? (es: Workbook(NomeFile).haspassword)
    Forse che la variabile NomeFile file deve essere completo del percorso?
    Comunque a me non funziona.
    Grazie



  • di isy data: 25/07/2014 11:41:27

    Ciao

    Cit: Come devo fare se voglio utilizzare questa proprietà su di un file non ancora aperto?

    Non puoi ottenere l'informazione senza aprire il file
    Puoi selezionare un percorso ed ottenere la lista di file protetti

    Vedi allegato


     
    Option Explicit
    
    Sub CheckWbook()
    Dim Value As String, a As Single
    Dim myfolder As String
    On Error Resume Next
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Show
        myfolder = .SelectedItems(1) & ""
    End With
    If myfolder = "" Then Exit Sub
    
    Application.DisplayAlerts = False
    Range("C4") = myfolder
    Range("B7:C" & Rows.Count) = ""
    
    a = 0
    Value = Dir(myfolder)
    Do Until Value = ""
        If Value = "." Or Value = ".." Then
        Else
            If Right(Value, 3) = "xls" Or Right(Value, 4) = "xlsx" Or Right(Value, 4) = "xlsm" Then
                On Error Resume Next
                Workbooks.Open Filename:=myfolder & Value, Password:="zzzzzzzzzzzz"
                If Err.Number > 0 Then
                    Range("C7").Offset(a, 0).Value = "Yes"
                End If
                Workbooks(Value).Close False
                On Error GoTo 0
                Range("B7").Offset(a, 0).Value = Value
                a = a + 1
            End If
        End If
        Value = Dir
    Loop
    Application.DisplayAlerts = True
    End Sub
    



  • di riccardo57 (utente non iscritto) data: 25/07/2014 12:01:05

    Grazie per la risposta, ma la domanda sorge spontanea.
    A cosa serve "haspassword" se lo posso utilizzare solo su un file già aperto?
    E' evidente che se lo posso aprire, conosco già a priori se il file è protetto o meno.

    Comunque dal codice che mi hai inviato poteri tramite l'struzione
    if Err.Number = 1004 then
    ........ codice per utilizzare la password di apertura
    else
    ....... codice per applicare una nuova password

    E' corretto?

    Grazie ancora



  • di isy data: 25/07/2014 12:37:56

    Il metodo HasPassword si riferisce sempre ad un foglio aperto

    Puoi utilizzare sia l'elenco che hai ottenuto per inserire un ciclo che intercettare l'errore come hai indicato in:
    else
    ....... codice per applicare una nuova password

    - I hope it helps
     
    'Questo esempio visualizza un messaggio se la cartella di lavoro attivo ha una password di protezione.
    
    If ActiveWorkbook.HasPassword = True Then 
     MsgBox "Remember to obtain the workbook password" & Chr(13) & _ 
     " from the Network Administrator." 
    End If



  • di riccardo57 (utente non iscritto) data: 25/07/2014 12:56:20

    Ok, capito.

    Grazie