Stefano tiene un problema en su empresa en el que las personas a menudo copian un libro de trabajo desde el servidor a su propia computadora, hacen cambios en el libro de trabajo y luego lo imprimen. Le gustaría hacer cumplir que solo se permite imprimir el libro de trabajo original, por lo que se pregunta si hay una forma de prohibir la impresión a menos que el libro de trabajo sea el que está en el servidor.

No hay una forma nativa de hacer esto en Word. Si lo desea, podría crear una macro que hiciera las dos cosas siguientes:

  1. Examine la ruta del documento actual. Si la ruta es cualquier cosa que no sea la ruta de su servidor, prohíba la impresión

Aquí hay un ejemplo de una macro de este tipo. Debe colocar esta versión en particular en el módulo ThisWorkbook; se ejecuta automáticamente cada vez que el usuario elige imprimir.

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

Tenga en cuenta que la variable sFile está configurada para contener la ruta completa al libro de trabajo (donde debe ubicarse el libro de trabajo en el servidor de la empresa). Si el nombre del libro de trabajo actual no coincide con este, la impresión está desactivada.

Existe un problema potencial con este tipo de macro y tiene que ver con la ruta al archivo. Es posible que la ruta del servidor difiera de un usuario a otro. La macro de ejemplo busca una ruta que incluya un UNC (Convención de nomenclatura universal), pero no todas las rutas pueden funcionar de esta manera. Por ejemplo, los usuarios pueden tener la carpeta del servidor asignada a una letra de unidad. En un sistema, la ruta podría ser g: / myserver / myfolder / y en otro podría ser z: / myserver / myfolder /.

La macro no puede compensar esto de forma fiable.

Es posible que pueda solucionar esto con un enfoque definitivamente de baja tecnología. Primero, coloque un pequeño archivo de texto (creado con el Bloc de notas) en la misma carpeta del servidor que el libro de trabajo. No es realmente importante lo que contiene el archivo de texto. Luego, agregue esta macro a su módulo 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

Lo que hace la macro es determinar la ruta del libro abierto actualmente. Esto luego se agrega al nombre del pequeño archivo de texto que colocó en la misma carpeta que el libro de trabajo. (En este caso, le he dado a este archivo el nombre TestFile.txt.) El comando Dir se usa para ver si el archivo existe. Si no existe, la impresión se cancela.

Una solución más completa podría ser utilizar lo que Microsoft denomina IRM (Information Rights Management). Esta solución, que es muy adecuada para su uso en un entorno corporativo, le permite controlar lo que las personas pueden y no pueden hacer con sus documentos. Un buen lugar para comenzar a aprender sobre IRM es aquí:

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

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (13526) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365.