Condividi:        

Salva_WorkBook_su_prima_Path_disponibile.

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_WorkBook_su_prima_Path_disponibile.

Postdi zanatta77 » 21/10/21 18:29

Buonasera
Sto cercando di far salvare un WhorkBook .Xlsm che si trova in rete su un server che viene aperto
e lavorato in modo alterno da 5 pc (postazioni diverse), quello che vorrei facesse è semplicemente
che venga salvato sul pc che ci sta lavorando alla sua chiusura riconoscendo uno dei
percorsi predefiniti come disponibile uscendo dalla sub senza debug o segnalazione errori.
Questo è quello che provo ma non va; :cry:

Codice: Seleziona tutto
  Sub SaveFolderTrue () 'In un modulo ho messo questo
     Dim MyFile As String
       MyFile = ActiveWorkbook.Name
         Application.DisplayAlerts = False
           Folder = "C:\Users\Miriam\Desktop\r\"
           Folder = "C:\Users\Jenny\Desktop\r\"
           Folder = "C:\Users\Iris\Desktop\r\"
           Folder = "C:\Users\Nadia\Desktop\r\"
           Folder = "C:\Users\Luca\Desktop\r\"
           If Folder = True Then
             ActiveWorkbook.SaveAs Filename:=Folder & MyFile
             Else
               Exit Sub
                 End If
       
   End Sub

Codice: Seleziona tutto
Private Sub Workbook_BeforeClose(Cancel As Boolean) ' Nell'evento di chiusura del WhorkBook richiamo la Macro in esecuzione
Call SaveFolderTrue
End Sub
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12

Sponsor
 

Re: Salva_WorkBook_su_prima_Path_disponibile.

Postdi Anthony47 » 21/10/21 20:15

Ma quindi vuoi salvare il file sul desktop di chi lo apre? Se e' così allora, con questa istruzione lo calcoli e poi lo usi:
Codice: Seleziona tutto
Folder = CreateObject("WScript.Shell").Specialfolders("Desktop") & "\r\"

Insomma:
Codice: Seleziona tutto
Sub SaveFolderTrue()  'In un modulo ho messo questo
    Dim MyFile As String, Folder As String
'
    MyFile = ActiveWorkbook.Name
    Folder = CreateObject("WScript.Shell").Specialfolders("Desktop") & "\r\"
    Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs Filename:=Folder & MyFile
    Application.DisplayAlerts = True
End Sub

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

Re: Salva_WorkBook_su_prima_Path_disponibile.

Postdi zanatta77 » 22/10/21 05:02

Buongiorno
Intanto grazie mille per quanto proposto,ma non va bene per quello che vorrei fare, in quanto in questo modo ovviamente salva sul Desktop di chiunque apre il file condiviso con altri oltre che le persone presenti sui percorsi inseriti.
Quello che vorrei che facesse è processare i percorsi predefiniti a monte che sono un dato fisso e nel caso uno di questi fosse VERO cioè disponibile va in salvataggio ed esce dalla Sub diversamente esce dalla Sub e non salva il WhorkBook.
Avevo pensato a qualcosa Boolean della Path
Codice: Seleziona tutto
If Folder = True Then
             ActiveWorkbook.SaveAs Filename:=Folder & MyFile
             Else
               Exit Sub
                 End If
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12

Re: Salva_WorkBook_su_prima_Path_disponibile.

Postdi Anthony47 » 22/10/21 08:21

Lo dico sempre: da una macro che non fa quello che si vuole fare non si capisce cosa si vuole fare...
Con le "nuove" spiegazioni, allora possiamo aggiungere il controllo tra l'utente al lavoro e una lista di utenti approvati:
Codice: Seleziona tutto
Sub SaveFolderTrue()  'In un modulo ho messo questo
    Dim MyFile As String, Folder As String
    Dim Approv
'
Approv = Array("UtenteA", "Miriam", "Jenni", "etc etc")               '<<< L'elenco degli utenti
If IsError(Application.Match(Environ("UserName"), Approv, False)) Then Exit Sub
'
    MyFile = ActiveWorkbook.Name
    Folder = CreateObject("WScript.Shell").Specialfolders("Desktop") & "\r\"
    Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs Filename:=Folder & MyFile
    Application.DisplayAlerts = True
End Sub

La riga marcata <<< va ovviamente compilata coi tuoi dati
Fai sapere…
Avatar utente
Anthony47
Moderatore
 
Post: 19442
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Salva_WorkBook_su_prima_Path_disponibile.

Postdi zanatta77 » 25/10/21 20:05

Buonasera
Ho provato oggi il tutto inserendo lo script gentilmente rivisto che compie quanto richiesto (Grazie mille Anthony47 ), successivamente ho fatto delle modifiche perchè non volevano che il salvataggio avvenisse in quel percorso ma bensì personalizzato singolarmente quindi ho fatto quanto segue che sembra funzioni, infine volevano una copia disponibile per sicurezza a ogni chiusura del file per poi cancellare il superfluo a cadenza mensile in manuale seguendo il percorso.
Codice: Seleziona tutto
Sub SaveFolderTrue()  '
    Dim MyFile As String, Folder As String
    Dim Approv
Approv = Array("Sally", "Miriam", "Jenni")             
  If IsError(Application.Match(Environ("UserName"), Approv, False)) Then Exit Sub
'    If Environ("UserName") = "Sally" Then
        Folder = ‪"C:\Users\Sally\Documents\SecurityBackup\"
     ElseIf Environ("UserName") = "Miriam" Then
        Folder = ‪"C:\Users\Miriam\Documents\Lav\SecurityBackup\"
      ElseIf Environ("UserName") = "Jenni" Then
        Folder = ‪"C:\Users\Jenni\Documents\Secondario\SecurityBackup\"
    MyFile = ActiveWorkbook.Name
    Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs Filename:=Folder & MyFile + "1"
    Application.DisplayAlerts = True
End Sub


Ovviamente da quello salvato devo modificare l'estensione del file se interessato a visionarlo ;)
Codice: Seleziona tutto
+ "1"

Grazie comunque per la disponibilità e la pazienza
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12

Re: Salva_WorkBook_su_prima_Path_disponibile.

Postdi Anthony47 » 25/10/21 23:29

Se funziona e' perfetta così
Per la prossima volta, puoi ottenere l'indirizzo del folder Documenti tramite Environ("USERPROFILE") & "\Documents"
Quindi, ad esempio:
Codice: Seleziona tutto
        Folder = Environ("USERPROFILE") & "\Documents\SecurityBackup\"


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


Torna a Applicazioni Office Windows

Chi c’è in linea

Visitano il forum: Nessuno e 10 ospiti