Come permettere la stampa di una cartella di lavoro solo da una posizione impostata

Stefano ha un problema nella sua azienda in cui le persone spesso copiano una cartella di lavoro dal server al proprio computer, apportano modifiche alla cartella di lavoro e quindi stampano la cartella di lavoro. Vorrebbe imporre che solo la cartella di lavoro originale possa essere stampata, quindi si chiede se esiste un modo per vietare la stampa a meno che la cartella di lavoro non sia quella sul server.

Non esiste un modo nativo per farlo in Excel. Se lo desideri, potresti creare una macro che faccia le due cose seguenti:

  1. Esaminare il percorso della cartella corrente
  2. Se il percorso è diverso dal percorso del server, vietare la stampa

 

Ecco un esempio di una macro creata a tale scopo. Dovresti inserire questa particolare versione nel modulo Questa_cartella_di_lavoro; verrà eseguita automaticamente ogni volta che l’utente sceglie di stampare.

 

Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Dim sFile As String

    sFile = "\\Server.name\folder\path\My file name.xlsm"

    If ThisWorkbook.FullName <>  sFile Then
        MsgBox "La stampa è possibile solo dalla copia sul server"
        Cancel = True
    End If
End Sub

 

 

Tieni presente che la variabile sFile è impostata per contenere il percorso completo della cartella di lavoro (dove dovrebbe trovarsi la cartella di lavoro sul server aziendale). Se il nome della cartella di lavoro corrente non corrisponde a questo percorso, la stampa è disabilitata.

Esiste un potenziale problema con questo tipo di macro e ha a che fare con il percorso del file. È possibile che il percorso del server differisca da utente a utente. La macro di esempio verifica la presenza di un percorso che includa un UNC (Universal Naming Convention), ma non tutti i percorsi potrebbero funzionare in questo modo. Ad esempio, gli utenti potrebbero avere la cartella sul server mappata su una lettera di unità. Su un pc il percorso potrebbe essere g:/mioserver/miacartella/ e su un altro potrebbe essere z:/mioserver/miacartella/. La macro non può gestire in modo affidabile questo.

Potresti essere in grado di aggirare questo problema con un approccio decisamente a bassa tecnologia. Innanzitutto, inserisci un piccolo file di testo (creato con Blocco note) nella stessa cartella sul server della cartella di lavoro. Non è veramente importante cosa contenga il file di testo. Quindi, aggiungi questa macro al tuo modulo Questa_cartella_di_lavoro:

 

Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Dim sPath As String
    Dim sFile As String

    sPath = ThisWorkbook.Path
    sFile = sPath & "\" & "TestFile.txt"

    If Dir(sFile) = "" Then
        MsgBox "La stampa è possibile solo dalla copia sul server"
        Cancel = True
    End If
End Sub

 

 

Ciò che fa la macro è determinare il percorso della cartella di lavoro attualmente aperta. Questo viene quindi aggiunto al nome del piccolo file di testo inserito nella stessa directory della cartella di lavoro (in questo caso, ho dato a questo file il nome TestFile.txt). Il comando Dir viene quindi utilizzato per vedere se il file esiste. Se non esiste, la stampa viene annullata.

Una soluzione più completa potrebbe essere quella di utilizzare ciò che Microsoft chiama IRM (Information Rights Management). Questa soluzione, che ben si adatta all’utilizzo in un ambiente aziendale, ti consente di controllare cosa le persone possono e non possono fare con i tuoi documenti. Un buon posto per iniziare a conoscere l’IRM è questo.

 

 

Tags: , , , , , , , ,

Ti è stato utile?