Stefano sta riscontrando 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 eseguire questa operazione in Word. Potresti, se lo desideri, creare una macro che abbia le seguenti due cose:

  1. Esamina il percorso del documento corrente. Se il percorso è diverso dal percorso del tuo server, proibisci la stampa

Ecco un esempio di una tale macro. Dovresti inserire questa particolare versione nel modulo ThisWorkbook; viene eseguito 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 "Printing only possible with server copy"

Cancel = True     End If End Sub

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

C’è un potenziale problema con questo tipo di macro e ha a che fare con il percorso del file. È possibile che il percorso per il server possa differire utente per utente. La macro di esempio verifica 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 a una lettera di unità. Su un sistema il percorso potrebbe essere g: / myserver / myfolder / e su un altro potrebbe essere z: / myserver / myfolder /.

La macro non può compensare 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 è molto importante cosa contiene il file di testo. Quindi, aggiungi questa macro al tuo modulo ThisWorkbook:

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 "Printing only possible with server copy"

Cancel = True     End If End Sub

Quello che fa la macro è determinare il percorso della cartella di lavoro attualmente aperta. Questo viene quindi aggiunto al nome del piccolo file di testo che hai inserito nella stessa cartella 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ù comprensiva potrebbe essere quella di utilizzare ciò che Microsoft definisce IRM (Information Rights Management). Questa soluzione, adatta per l’utilizzo in un ambiente aziendale, consente di controllare ciò che le persone possono e non possono fare con i tuoi documenti. Un buon posto per iniziare a conoscere IRM è qui:

https://support.office.com/en-us/article/information-rights-management-in-office-c7a70797-6b1e-493f-acf7-92a39b85e30c

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (13526) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 e Excel in Office 365.