Stellar Blade Un'esclusiva PS5 che sta facendo discutere per l'eccessiva bellezza della protagonista. Vieni a parlarne su Award & Oscar!

Excel Forum Per condividere esperienze su Microsoft Excel

salva workbook con nome utente

  • Messaggi
  • OFFLINE
    giova62
    Post: 25
    Registrato il: 29/04/2021
    Città: CITTADELLA
    Età: 62
    Utente Junior
    365/2007
    00 16/06/2022 13:28
    Ciao nel file allegato c'è un foglio in cui si inserisce chi accede al workbook.
    C'è un problema.
    Se faccio una modifica a uno dei fogli e poi alla fine dico non salvare questa modifica resta.
    Se il workbook viene aperto il nome deve restare sia con salva si o no.
    Nota:
    inserire nel foglio utenti_errori colonna E il proprio nome utente
    Spero di essermi spiegato.
    Grazie
    [Modificato da giova62 16/06/2022 13:32]
  • ONLINE
    rollis13
    Post: 1.208
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Veteran
    Excel 2016-32bit Win11
    00 16/06/2022 15:01
    Se vuoi mantenere il nome dell'accesso puoi scegliere due strade:
    1) salvare il dato su un altro file esterno al progetto
    2) salvare subito il progetto non appena aperto e prima di eventuali modifiche.
    In entrambi i casi questo va fatto all'avvio nella macro WorkBook_Open non appena hai rilevato il nome, subito dopo queste righe, cambia solo l'elemento da salvare:
    '-----------------------------------------------------------------------
    'per username - chi apre
    Sheets("Utenti_Errori").Unprotect "987654"
    Sheets("Utenti_Errori").Cells(2, 6).Value = Environ("UserName") 'F2
    Sheets("Utenti_Errori").Protect "987654"
    '------------------------------------------------------------------------
    
    Se intendi utilizzare il 2' metodo ti basta inserire un:
    ThisWorkbook.Save
    [Modificato da rollis13 16/06/2022 15:04]

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    giova62
    Post: 25
    Registrato il: 29/04/2021
    Città: CITTADELLA
    Età: 62
    Utente Junior
    365/2007
    00 16/06/2022 15:15
    Ciao rollis.
    Bisogna inserire nello stesso workbook chi lo apre.
    Le modfiche che hai scritto ci sono già nell'allegato
  • OFFLINE
    giova62
    Post: 26
    Registrato il: 29/04/2021
    Città: CITTADELLA
    Età: 62
    Utente Junior
    365/2007
    00 16/06/2022 15:33
    Il problema è :
    se faccio una modifica e poi alla chiusura dico non salvare la modifica resta
  • OFFLINE
    tanimon
    Post: 1.503
    Registrato il: 27/06/2011
    Utente Veteran
    excel 2007
    00 16/06/2022 19:44
    ciao a tutti,
    mettendo un

    Call a


    nell'evento Worksheet_Change di ogni foglio,

    prova a modificare così

    nel modulo1
    vb
    Option Explicit
    
    Public SoloVisione As Boolean
    
    Sub a()
    SoloVisione = False
    
    
    End Sub



    nel BeforeClose

    vb
       
        Dim val1 As String
        Dim val2 As String
        Dim val3 As String
        
       
    '=========================================================
    Call a
    '============================================================
        
    '---------------------------------------------------------------------------
     'ACCESSI
        
     Dim nomefoglio As Variant
        Dim Urec   As String
    
        Application.ScreenUpdating = False
        Application.EnableEvents = False            '<-aggiunta
        
        With Sheets("ACCESSI")                         '<<< apre il foglio e sprotegge
            .Unprotect "987654"
            .Cells(10000, "II") = ActiveSheet.Name
            
            'Urec = .Cells(Rows.Count, 52).End(xlUp).Row + 1
            '.Cells(Urec, 52) = Application.UserName
            '.Cells(Urec, 53) = Now
            '.Cells(Urec, 54) = "FINE SESSIONE"
            
             Urec = .Cells(Rows.Count, 1).End(xlUp).Row + 1
            .Cells(Urec, 1) = Application.UserName
            .Cells(Urec, 2) = Now
            .Cells(Urec, 3) = "FINE SESSIONE"
            
            .Protect "987654"
        End With                                    '<<< ritorna al foglio
        
       'ThisWorkbook.Save                                       'salva
       
       
    '=============================================================================
       If SoloVisione = False Then
        ThisWorkbook.Saved = False     'se ci sono stati interventi proponi popup Salva
       Else
        ThisWorkbook.Save
       End If
    '========================================================================================



    ciao
    Frank
    [Modificato da tanimon 16/06/2022 19:52]







    Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
    Excel 2007 forse anche 2013 ... 2021 ... 365 e future...
  • OFFLINE
    tanimon
    Post: 1.506
    Registrato il: 27/06/2011
    Utente Veteran
    excel 2007
    00 16/06/2022 20:46
    non riesco ad allegare il file

    prova a cambiare il BeforeClose

    ciao
    Frank


    vb
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    
      
     Dim name1 As String, name2 As String, name3 As String, name4 As String, name5 As String
     Dim sPath As String, sComm5 As String, sComm6 As String, sComm7 As String, sComm8 As String
         
         
        Dim fogli As Worksheet
      
        Dim iUserResponse   As Integer
    
        Dim risposta1   As String
        Dim risposta2   As String
        Dim risposta3   As String
        Dim sStatus         As String
       
        Dim val1 As String
        Dim val2 As String
        Dim val3 As String
        
        
        
    '---------------------------------------------------------------------------
     'ACCESSI
        
     Dim nomefoglio As Variant
        Dim Urec   As String
    
        Application.ScreenUpdating = False
        Application.EnableEvents = False            '<-aggiunta
        
        With Sheets("ACCESSI")                         '<<< apre il foglio e sprotegge
            .Unprotect "987654"
            .Cells(10000, "II") = ActiveSheet.Name
            
            'Urec = .Cells(Rows.Count, 52).End(xlUp).Row + 1
            '.Cells(Urec, 52) = Application.UserName
            '.Cells(Urec, 53) = Now
            '.Cells(Urec, 54) = "FINE SESSIONE"
            
             Urec = .Cells(Rows.Count, 1).End(xlUp).Row + 1
            .Cells(Urec, 1) = Application.UserName
            .Cells(Urec, 2) = Now
            .Cells(Urec, 3) = "FINE SESSIONE"
            
            .Protect "987654"
        End With                                    '<<< ritorna al foglio
        
       
            
    
    '------------------------------------------------------------------------------------------------------
                   
    '------------------------------------------------------------------------------------------------------
    'per utente autorizzato
    
    Dim avviso As String
    Dim cercarange As Range
    
         
    
        Set cercarange = Foglio8.Range("E2:E11").Find(Foglio8.Range("F2"))
         
    
        If Not cercarange Is Nothing Then
                ThisWorkbook.Save                                       'salva
                If SoloVisione = True Then ThisWorkbook.Saved = False   'se ci sono stati interventi proponi popup Salva
                Application.ScreenUpdating = True
                Application.EnableEvents = True             '<-aggiunta
        
       Else
          ' MsgBox "Value not found"
          avviso = MsgBox(Environ("UserName") & " non sei autorizzato a modificare questo workbook", vbCritical + vbDefaultButton2, "AVVISO!")
    
            If avviso = vbOK Then
    
                Me.Saved = True
    
                Exit Sub
            End If
      End If
            
    
    
    
        ' MsgBox "Value not found"
        'ThisWorkbook.Saved = True
        ' ThisWorkbook.Close
    
    
       
    
    
    '---------------------------------------------------------------------------
    
        
        
    '---------------------------------------------------------------------------
        
         Application.ScreenUpdating = False
         
       
     '------------------------------------------------------------------------------------------
    'backup
    
        name5 = Foglio11.Range("A2").Value
       
       sComm5 = "BACKUP"
       sComm6 = Foglio11.Range("A2").Value
       
       sComm7 = sComm6  'Foglio6.Range("B3").Value
       sComm8 = sComm5 & " - " & sComm6 'Foglio6.Range("B3").Value
       
    
    If MsgBox("Sign. " & Environ("UserName") & " vuoi il backup di:" & Chr(13) & Chr(13) & _
    "< " & sComm6 & " >?", vbQuestion + vbYesNo + vbDefaultButton2, "AVVISO!") = vbYes Then
      
          
       sPath = ThisWorkbook.Path & "\" & sComm8
        If Dir(sPath, vbDirectory) = "" Then MkDir sPath
        
       'sPath = sPath & "\" & sComm7
        'If Dir(sPath, vbDirectory) = "" Then MkDir sPath
        
       'sPath = sPath & "\" & sComm6
        'If Dir(sPath, vbDirectory) = "" Then MkDir sPath
        
        
      ThisWorkbook.SaveCopyAs sPath & "\" & Format(Now, "dd-mm-yyyy - hh.mm") & " - " & ActiveWorkbook.Name '<<< data/ora
    
    End If
            
       ' End If
                                         
                        
     '--------------------------------------------------------------------------
                        
     '--------------------------------------------------------------------------
     '
     '--------------------------------------------------------------------------
    
     
    
    
    
          Application.ScreenUpdating = True
               
               
       
        
     
    End Sub







    Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
    Excel 2007 forse anche 2013 ... 2021 ... 365 e future...
  • OFFLINE
    giova62
    Post: 27
    Registrato il: 29/04/2021
    Città: CITTADELLA
    Età: 62
    Utente Junior
    365/2007
    00 16/06/2022 20:49
    Ciao tanimon
    il problema è sempre che il nome di chi accede al workbook nel foglio accessi deve restrare anche se alla chiusura scelgo non salvare.
    Con la tua modifica scegliendo non salvare il nome non resta.
    Allego il file con le tue modifiche.
    [Modificato da giova62 16/06/2022 20:54]
  • OFFLINE
    tanimon
    Post: 1.507
    Registrato il: 27/06/2011
    Utente Veteran
    excel 2007
    00 16/06/2022 21:40
    prova
    ciao
    Frank

    vb
    Private Sub Workbook_Open()
        
       
         Dim fogli As Worksheet
         Dim Ur As Long
         
     '-----------------------------------------------------------------------
    'per username - chi apre
    Sheets("Utenti_Errori").Unprotect "987654"
    Sheets("Utenti_Errori").Cells(2, 6).Value = Environ("UserName") 'F2
    '=========================================
    ThisWorkbook.Save
    '============================================
    Sheets("Utenti_Errori").Protect "987654"
    '------------------------------------------------------------------------
    







    Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
    Excel 2007 forse anche 2013 ... 2021 ... 365 e future...
  • OFFLINE
    tanimon
    Post: 1.508
    Registrato il: 27/06/2011
    Utente Veteran
    excel 2007
    00 16/06/2022 22:16
    ciao
    sempre nel
    Private Sub Workbook_Open()

    forse è meglio così

    vb
    With Sheets("ACCESSI")                         '<<< apre il foglio e sprotegge
            .Unprotect "987654"
            .Cells(10000, "II") = ActiveSheet.Name
            .Unprotect "987654"
            
            'Urec = .Cells(Rows.Count, 52).End(xlUp).Row + 1
            '.Cells(Urec, 52) = Application.UserName
            '.Cells(Urec, 53) = Now
            '.Cells(Urec, 54) = "ACCESSO"
            
            Urec = .Cells(Rows.Count, 1).End(xlUp).Row + 1
            .Cells(Urec, 1) = Application.UserName
            .Cells(Urec, 2) = Now
            .Cells(Urec, 3) = "ACCESSO"
            '=========================================
            ThisWorkbook.Save
            '============================================
            .Protect "987654"
        End With







    Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
    Excel 2007 forse anche 2013 ... 2021 ... 365 e future...
  • OFFLINE
    giova62
    Post: 28
    Registrato il: 29/04/2021
    Città: CITTADELLA
    Età: 62
    Utente Junior
    365/2007
    00 16/06/2022 23:00
    Ora inserisce l'accesso fisso, se all'uscita scelgo non salvare non inserisce "FINE SESSIONE"
    Allego il workbook con le ultime modifiche
  • OFFLINE
    tanimon
    Post: 1.509
    Registrato il: 27/06/2011
    Utente Veteran
    excel 2007
    00 17/06/2022 00:02
    All'evento Workbook_BeforeClose,
    prova ad applicare la proposta del post #9.

    Ciao
    Frank







    Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
    Excel 2007 forse anche 2013 ... 2021 ... 365 e future...
  • OFFLINE
    giova62
    Post: 29
    Registrato il: 29/04/2021
    Città: CITTADELLA
    Età: 62
    Utente Junior
    365/2007
    00 17/06/2022 08:21
    Ora è così, ma non cambia

    '---------------------------------------------------------------------------
     'ACCESSI
        
     Dim nomefoglio As Variant
        Dim Urec   As String
    
        Application.ScreenUpdating = False
        Application.EnableEvents = False            '<-aggiunta
        
        With Sheets("ACCESSI")                         '<<< apre il foglio e sprotegge
            .Unprotect "987654"
            .Cells(10000, "II") = ActiveSheet.Name
            
            'Urec = .Cells(Rows.Count, 52).End(xlUp).Row + 1
            '.Cells(Urec, 52) = Application.UserName
            '.Cells(Urec, 53) = Now
            '.Cells(Urec, 54) = "FINE SESSIONE"
            
             Urec = .Cells(Rows.Count, 1).End(xlUp).Row + 1
            .Cells(Urec, 1) = Application.UserName
            .Cells(Urec, 2) = Now
            .Cells(Urec, 3) = "FINE SESSIONE"
            
            '=========================================
            ThisWorkbook.Save
            '============================================
            
            .Protect "987654"
        End With                                    '<<< ritorna al foglio
        
       'ThisWorkbook.Save                                       'salva
       'If SoloVisione = True Then ThisWorkbook.Saved = False   'se ci sono stati interventi proponi popup Salva
       'Application.ScreenUpdating = True
       'Application.EnableEvents = True             '<-aggiunta
        
        '=============================================================================
       If SoloVisione = False Then
        ThisWorkbook.Saved = False     'se ci sono stati interventi proponi popup Salva
       Else
        ThisWorkbook.Save
       End If
    '========================================================================================
    
    
  • OFFLINE
    giova62
    Post: 30
    Registrato il: 29/04/2021
    Città: CITTADELLA
    Età: 62
    Utente Junior
    365/2007
    00 18/06/2022 16:11
    Ciao a tutti.
    Mi sa che per quello che chiedo non ci sia una soluzione.
  • OFFLINE
    dodo47
    Post: 3.304
    Registrato il: 06/04/2013
    Utente Master
    2010
    00 18/06/2022 19:07
    ciao

    - perchè devi mettere in F2 di utenti_errori il nome dell'utente, visto che lo inserisci anche in ACCESSI ??

    - perchè in II10000 di ACCESSI metti il nome del foglio attivo ? (che poi qual è ??)

    saluti





    [Modificato da dodo47 18/06/2022 19:10]
    Domenico
    Win 10 - Excel 2016
  • OFFLINE
    giova62
    Post: 31
    Registrato il: 29/04/2021
    Città: CITTADELLA
    Età: 62
    Utente Junior
    365/2007
    00 18/06/2022 19:35
    Ciao dodo47

    F2:
    C'è in thisworkbook una parte di macro per autorizzare chi accede al workbook.
    Chi addede è in F2 foglio utenti_errori se uno di questi è uguale alla colonna E continua altrimenti si chiude

    qui:
    perchè in II10000 di ACCESSI metti il nome del foglio attivo ? (che poi qual è ??)
    mi sa che è rimasto qualcosa di altre macro

  • OFFLINE
    dodo47
    Post: 3.307
    Registrato il: 06/04/2013
    Utente Master
    2010
    00 19/06/2022 17:36
    ciao
    non puoi farlo.

    Se in uscita devi scrivere chi ha utilizzato il file (ipotizziamo uno autorizzato), devi salvare per forza e pertanto l'utente non può dire ad excel di non salvare, di conseguenza si porterebbe appresso le modifiche.

    L'unica via che hai te l'ha suggerita rollis (un caro saluto):

    rollis13:

    1) salvare il dato su un altro file esterno al progetto



    saluti
    Domenico
    Win 10 - Excel 2016