Eseguire una macro alla chiusura della cartella attiva

Anonimo
2023-03-22T17:06:12+00:00

Buon giorno.

Vorrei eseguire una macro alla chiusura della cartella attiva.

La macro è la seguente:

Private Sub Backup_Disco_R()

Dim fs As Object

Dim sPathDestinazione As String

Dim sVecchioNome As String

Dim sNuovoNome As String

On Error Resume Next

MkDir "R:\BackupCondomini"

sPathDestinazione = "R:\BackupCondomini"

sVecchioNome = "E:\Amministrazione\CondominiCartelleV"

sNuovoNome = "E:\Amministrazione\CondominiCartelleV" & Format(Date, "_dd_mm_yyyy")

Set fs = CreateObject("Scripting.FileSystemObject")

fs.movefolder sVecchioNome, sNuovoNome

fs.CopyFolder sNuovoNome, sPathDestinazione, True

fs.movefolder sNuovoNome, sVecchioNome

Set fs = Nothing

Application.Quit

End Sub

Ho provato ad inserire la macro in ThisWorkbook ---> Private Sub Workbook_Deactivate() ma non funziona.

Ho provato con ThisWorkbook ---> Private Sub Workbook_BeforeClose(Cancel As Boolean) ma non funziona.

Per piacere potete dirmi come fare affinchè la macro venga eseguita ogni volta che chiudo la cartella attiva.

Un grosso grazie a tutti.

Nunzio.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

2 risposte

Ordina per: Più utili
  1. Anonimo
    2023-03-23T10:43:36+00:00

    Ciao Shakiru Soenu

    Ho provato ad eseguire il codice ma segna degli errori.

    Mi scuso per la mia ignoranza ma se ho capito bene quale soluzione adotto( la 2° ?) :

    1° soluzione

    Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Sub privato Workbook_BeforeClose(Annulla come booleano)

    Se Workbooks.Count = 1      ' allora Esegui la macro di backup 
    
      Backup\_Disco\_R 
    
    fine Se 
    

    fine sub

    End Sub

    2° soluzione

    Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Se Workbooks.Count = 1      ' allora Esegui la macro di backup 
    
      Backup\_Disco\_R 
    
    fine Se 
    

    End Sub

    Per cortesia puoi indirizzarmi.

    Grazie.

    Saluti.

    Nunzio.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2023-03-22T17:44:47+00:00

    Ciao GiovanniSalviati!

    Per eseguire una macro quando la cartella attiva viene chiusa, è possibile utilizzare l'evento Workbook_BeforeClose nel modulo ThisWorkbook. Tuttavia, è necessario assicurarsi che l'istanza di Excel stessa sia chiusa, non solo la cartella di lavoro attiva. Ecco come è possibile modificare il codice per raggiungere questo obiettivo:

    Apri il modulo ThisWorkbook nell'editor VBA.

    Aggiungere il codice seguente al modulo:

    Sub privato Workbook_BeforeClose(Annulla come booleano) 'Controlla se ci sono altre cartelle di lavoro aperte Se Workbooks.Count = 1 allora 'Esegui la macro di backup Backup_Disco_R Fine Se Fine sub Salvare la cartella di lavoro e chiuderla.

    Questo codice eseguirà la macro Backup_Disco_R alla chiusura dell'ultima cartella di lavoro, indicando che l'istanza di Excel viene chiusa. Se sono aperte più cartelle di lavoro, la macro non verrà eseguita per evitare di interferire con le altre cartelle di lavoro.

    Si noti che la macro Backup_Disco_R deve trovarsi in un normale modulo VBA, non nel modulo ThisWorkbook, affinché possa essere chiamata dall'evento Workbook_BeforeClose.

    Gentilmente fatemi sapere, se avete bisogno di ulteriore assistenza, sarò lieto di aiutarvi ulteriormente.

    Migliori saluti Shakiru ·

    Questa risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o espressioni strane.

    La risposta è stata utile?

    0 commenti Nessun commento