Password WorkBook



  • Password WorkBook
    di Mauro (utente non iscritto) data: 07/10/2014 12:23:39

    Ciao a tutti,
    ho un WorkBook che salvo in automatico in due diversi percorsi e con due password all'apertura diverse.
    Vi chiedo, è possibile impostare che all'apertura del workbook se la password è "XXX" (cioè esatta) allora esegui determinate macro.
    Grazie per la Vostra attenzione,
    Mauro



  • di Zer0Kelvin data: 07/10/2014 23:12:36

    Sì, è possibile.


  • Password WorkBook
    di Mauro (utente non iscritto) data: 08/10/2014 10:05:08

    Grazie per la risposta, come devo agire.
    Mauro



  • di Zer0Kelvin data: 08/10/2014 17:12:22

    In che modo viene richiesta la password all'apertura?


  • Password WorkBook
    di Mauro (utente non iscritto) data: 08/10/2014 18:07:03

    con un checkbox all'avvio del workbook (Password: )



  • di Zer0Kelvin data: 08/10/2014 21:16:15

    Probabilmente con ceckbox indendevi "InputBox"?
    Servirebbe perlomeno vedere il codice che lancia l'inputbox.



  • di Zer0Kelvin data: 08/10/2014 21:25:04

    Oppure la protezione è stata impostata da menù?


  • Password WorkBook
    di Mauro (utente non iscritto) data: 09/10/2014 09:04:32

    Dal Menu



  • di Zer0Kelvin (utente non iscritto) data: 09/10/2014 14:50:59

    Ma tu vorresti che le macro da eseguire fossero diverse per i due file?
    In ogni caso dovresti utilizzare Workbook_Open
    Inserisco sotto un esempio che esegue macro differenti a seconda della password usata per aprire il file.

    Workbook_Open và inserita nelmodulo di codice di "Questa_cartella_di_lavoro" e viene eseguita ad ogni apertura del file.
    Per inserire il codice:
    -Copia il codice della macro
    -In Excel, premi ALT-F11 per entrare nell'editor VBA
    -a destra, nella finestra del VBAproject, dovresti vedere la voce "Questa_cartella_di_lavoro" (in versioni più vecchie di excel potresti trovare invece "ThisWorkbook", ma è lo stesso)
    -se la voce non dovesse essere visibile, fai doppio click su "Microsoft Excel Oggetti"
    -fai doppio click su "Questa_cartella_di_lavoro" (o "ThisWorkbook")
    -incolla il codice della macro e modificalo secondo le tue esigenze.
     
    Private Sub Workbook_Open()
        If ThisWorkbook.Password = "XXX" Then '<=cambia XXX con la tua password
            Macro1
            Macro2
        ElseIf ThisWorkbook.Password = "YYY" Then'<=cambia YYY con la tua password
            Macro3
            Macro4
        End If
    End Sub
    


  • Password WorkBook
    di Mauro (utente non iscritto) data: 09/10/2014 15:44:47

    Non mi funziona forse perché ho impostato la password di apertura in menu/strumenti/opzioni/protezione?



  • di Zer0Kelvin data: 09/10/2014 21:15:06

    No, in realtà è dovuto al fatto che Workbook.Password non funziona come descritto dall'help di Excel:
    _______________________________________________________________________________________________________________________
    Workbook.Password, proprietà
    Restituisce o imposta la password che deve essere fornita per aprire la cartella di lavoro specificata. Proprietà di tipo String di lettura/scrittura.
    _______________________________________________________________________________________________________________________
    Scopro solo adesso che (almeno in Excel 2010) non restisce la password impostata, ma una serie di asterischi, quindi naturalmente il codice che ho postato non funziona.
    Ho fatto molto male a fidarmi.
    Comunque ci sono altri sistemi; tu mi confermi che hai bisogno di eseguire macro diverse all'avvio per ognuno dei due file?



  • di Zer0Kelvin data: 10/10/2014 09:30:15

    PS: sopra hai detto che salvi automaticamente il file in due posizioni differenti, avrei bisogno di vedere il codice che usi per il salvataggio.
    In quel punto si possono impostare dei Names da utilizzare poi all'apertura per determinare quali macro andranno eseguite. La password non può essere usata per questo scopo, purtroppo.


  • Password WorkBook
    di Mauro (utente non iscritto) data: 10/10/2014 10:17:34

    Ciao Zer0Kelvin, ti confermo che salvo in due differenti percorsi con due pass diverse, allego il codice.
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Workbooks.Open Filename:="H:AAABBBCCCMIODOCMiodoc.xls", Password:="mauro"
    Workbooks("Miodoc.xls").Activate
    ChDir "H: "
    ActiveWorkbook.SaveAs Filename:= _
    H:Miodoc.xls, FileFormat:=xlNormal, _
    Password:="mauro", WriteResPassword:="", ReadOnlyRecommended:=False, _
    CreateBackup:=False
    ChDir "D: "
    ActiveWorkbook.SaveAs Filename:= _
    D:Miodoc.xls, FileFormat:=xlNormal, _
    Password:="goal", WriteResPassword:="", ReadOnlyRecommended:=False, _
    CreateBackup:=False
    Windows("Miodoc.xls").Close



  • di Zer0Kelvin data: 10/10/2014 16:14:59

    Come ho detto si potrebbe usare un nome definito ma, se non ti crea dei problemi, la cosa più semplice è impostare il valore di una cella qualunque per identificare il file.
    Nell'esempio ho utilizzato l'ultima cella dell'ultimo foglio, ma potresti usare una cella qualunque, per memorizzare un valore: "File1" o "File2".
    Poi, all'apertura del file, viene controllato il contenuto della cella e vengono eseguite le macro richieste per File1 o per File2.
    La (1) è la tua macro modificata,
    La (2) è la procedura Workbook_Open che andrà inserita nel modulo di "ThisWorkbook" del file da salvare.
     
    '** (1)
    Sub test()
    Dim MDoc As Workbook
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        Set MDoc = Workbooks.Open(Filename:="H:AAABBBCCCMIODOCMiodoc.xls", Password:="mauro")
        If Not MDoc Is Nothing Then
            With MDoc
                With .Sheets(.Sheets.Count)
                    .Cells(.Rows.Count, .Columns.Count) = "File1"
                End With
                .SaveAs Filename:="H:Miodoc.xls", FileFormat:=xlNormal, Password:="mauro"
                With .Sheets(.Sheets.Count)
                    .Cells(.Rows.Count, .Columns.Count) = "File2"
                End With
                .SaveAs Filename:="D:Miodoc.xls", FileFormat:=xlNormal, Password:="goal"
            End With
            MDoc.Close
            Set MDoc = Nothing
        End If
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
    End Sub
    '__________________________________________________________________
    '** (2)
    Private Sub Workbook_Open()
        With ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
            If .Cells(.Rows.Count, .Columns.Count) = "File1" Then
                Macro1 'esegui le macro per File1
                Macro2
                'Eccetera...
            ElseIf .Cells(.Rows.Count, .Columns.Count) = "File2" Then
                Macro3 'esegui le macro per File2
                Macro4
                'Eccetera...
            End If
        End With
    End Sub
    


  • Password WorkBook
    di Mauro (utente non iscritto) data: 13/10/2014 09:38:24

    grazie Zer0Kelvin, ho provato il codice è perfetto lo devo solo adattare al mio.
    Grazie Mauro