Condividi:        

salva una copia prima di chiudere

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

salva una copia prima di chiudere

Postdi matzap » 09/04/14 13:56

Ciao a tutti!
ho un file excel sul mio pc che vorrei, ogni volta che lo chiudo salvare una copia in un percorso di rete. come posso fare?
Ho provato con "Sub before close" ma non ho ben capito come funziona.
Potete aiutarmi?
Grazie
Ciao
excel 2010
matzap
Utente Senior
 
Post: 246
Iscritto il: 16/04/13 08:27

Sponsor
 

Re: salva una copia prima di chiudere

Postdi ricky53 » 09/04/14 16:01

Ciao,
prova a lavorare su questo esempio
Codice: Seleziona tutto
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Risp = MsgBox("Salvare il file ?", vbYesNo)
   
    If Risp = 6 Then
        ActiveWorkbook.Save
    Else
' QUI non si salva il file
' puoi dare un messaggio o ...
    End If
End Sub


Il codice va copiato in "ThisWorkbook" o in "Questa_cartella_di_Lavoro" in base alla versione di Office (2003 o successive)
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: salva una copia prima di chiudere

Postdi Anthony47 » 10/04/14 01:33

Il suggerimento di Ricky va bene se il percorso di rete e' l' unico in cui vuoi salvare il file; se invece il salvataggio normale e' su un disco locale e sul disco di rete vuoi "una copia" allora il discorso da fare e' piu' articolato (ma lo faremo solo se "quello" e' il tuo caso).

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: salva una copia prima di chiudere

Postdi matzap » 14/04/14 13:39

Ciao Ricky, Anthony,
questo codice funziona:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Risp = MsgBox("Salvare il file ?", vbYesNo)

If Risp = 6 Then
ActiveWorkbook.SaveCopyAs "Y:\percorso file\ nome file.xlsm"
End if
End Sub
però mi salva una copia comprese le macro che invece vorrei non copiare o evitare che qualcuno possa attivarle.
Ho provato a utilizzare l'estensione .xlsx, ma poi non i fa aprire il file copiato
excel 2010
matzap
Utente Senior
 
Post: 246
Iscritto il: 16/04/13 08:27

Re: salva una copia prima di chiudere

Postdi ricky53 » 14/04/14 16:15

Ciao,
avresti dovuto dire cosa effettivamente ti occorreva.
Adesso hai aggiunto un'altra condizione:
B) salvare il file ma senza macro.

Hai altre condizioni prima di cercare come risolvere ?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: salva una copia prima di chiudere

Postdi matzap » 15/04/14 11:31

Scusami, è che man mano che vado avanti complico il tutto....
comunque no questa è l'ultima richiesta ( credo!!!)
solo una curiosità: perchè Risp=6?
ciao
excel 2010
matzap
Utente Senior
 
Post: 246
Iscritto il: 16/04/13 08:27

Re: salva una copia prima di chiudere

Postdi ricky53 » 15/04/14 13:44

Ciao,
il valore "6" corrisponde alla risposta "YES", il valore "7", invece, corrisponde a "NO"
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: salva una copia prima di chiudere

Postdi matzap » 13/05/14 10:12

Ciao Ricky,
per il salvataggio di una copia senza macro mi puoi aiutare?
grazie come sempre
excel 2010
matzap
Utente Senior
 
Post: 246
Iscritto il: 16/04/13 08:27

Re: salva una copia prima di chiudere

Postdi Anthony47 » 13/05/14 14:24

Il metodo giusto per salvare il file senza macro e' ActiveWorkbook.SaveAs (e non ActiveWorkbook.SaveCopyAs) da eseguirsi subito prima della chiusura del file.
Tuttavia ti deve essere chiaro che la fase "before close" e' usata da Excel per verificare se il file necessita di essere salvato (perche' contiene modifiche non ancora salvate), con relativa domanda all' utente. Questa fase, per quanto detto sopra, va gestita dalla macro prima di procedere al salvataggio in formato xlsx, quindi con domanda se si vuole salvare prima di uscire oppure no; la tua macro pero' gia' contiene una domanda analoga, con uno scopo diverso, e questo non puo' che confondere l' utente.

Con questa premessa, la macro che fa il lavoro corretto di controllo alla chiusura piu' il salvataggio della copia senza le macro puo' essere questa:
Codice: Seleziona tutto
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Risp
'
'Verifica se file va salvato:
If Not ThisWorkbook.Saved Then
    Risp = MsgBox("Salvare le modifiche apportate al file " & ThisWorkbook.Name, vbYesNoCancel)
    If Risp = vbYes Then
        ActiveWorkbook.Save
    Else
        If Risp = vbCancel Then
            Cancel = True
            Exit Sub
        End If
    End If
   
End If
'
'Salvataggio copia:
Risp = MsgBox("Salvare il COPIA del file ?", vbYesNo)
If Risp = 6 Then
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:= _
      "D:\Percorso\NomeFile.xlsx", FileFormat:= _
      xlOpenXMLWorkbook, CreateBackup:=False
End If
End Sub

Vedi se riesci a personalizzarla.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: salva una copia prima di chiudere

Postdi matzap » 14/05/14 14:17

Hai ragione Anthony,
così è più corretto e logico.
Grazie!
excel 2010
matzap
Utente Senior
 
Post: 246
Iscritto il: 16/04/13 08:27


Torna a Applicazioni Office Windows


Topic correlati a "salva una copia prima di chiudere":


Chi c’è in linea

Visitano il forum: Nessuno e 37 ospiti