Limitar dónde se usa un libro de trabajo (Microsoft Excel)
Shay trabaja con una organización de voluntarios y han desarrollado un libro de trabajo en Excel específicamente para sus voluntarios. No quieren que lo copien o compartan con personas externas, por lo que Shay se pregunta si hay alguna forma de proteger el libro de trabajo para que funcione solo para una computadora específica y no para otras.
Hay formas de tratar de hacer cumplir la seguridad de los libros de trabajo, pero hay consideraciones a tener en cuenta antes de decidirse por la mejor forma.
Comprenda que casi cualquier enfoque incomodará a los usuarios en un grado u otro. Además, el enfoque que adopte puede depender de si los usuarios están únicamente en su red interna o son voluntarios que no están conectados a su red.
Una manera fácil de comenzar es simplemente proteger con contraseña el libro de trabajo y luego dejar que sus voluntarios conozcan la contraseña. El doble inconveniente de esto es que cualquier contraseña que les dé a sus voluntarios continuará funcionando después de que ya no sean voluntarios y para cualquier persona a quien los voluntarios puedan pasar el libro de trabajo. Esto es cierto incluso si crea una contraseña individual para cada voluntario.
Cualquier otro enfoque dependería de la adición de macros al libro de trabajo.
Una excelente manera es que la macro verifique el nombre de la computadora en la que se abre el libro. Este es un ejemplo de una macro de este tipo:
Private Sub Workbook_Open() Dim sComputerName As String Dim sPossible As String Dim sTemp As String sPossible = "[NEWDELL][Computer1][Order Entry][Dan's System]" sPossible = sPossible & "[Computer2][Computer3]" sComputerName = Environ("computername") sTemp = "[" & sComputerName & "]" If InStr(sPossible, sTemp) Then MsgBox "Welcome to the workbook." Else MsgBox "You are not authorized to open this workbook." Workbooks(ActiveWorkbook.Name).Close SaveChanges:=False End If End Sub
La idea detrás de la macro es que usted definiría, en la cadena sPossible, los nombres de cada computadora en la que está permitido abrir el libro. Todo lo que necesita hacer es asegurarse de que los nombres de las máquinas estén escritos exactamente correctamente y encerrarlos entre corchetes en la cadena sPossible. La función Environ devuelve el nombre real de la computadora, se coloca en la variable sTemp entre corchetes, y luego se usa la función InStr para ver si está en la lista de máquinas posibles.
Si es así, se muestra un cuadro de mensaje; si no es así, se muestra un cuadro de mensaje y el libro se cierra sin guardar ningún cambio.
Si prefiere algo incluso un poco más seguro, también puede utilizar la función Environ para devolver «http://username-password.com/[nombre de usuario]»
value, que le daría el nombre de usuario de la cuenta que se usa en la computadora.
Este enfoque macro es relativamente simple, pero requiere conocer los nombres de las computadoras (y / o nombres de usuario) antes de que funcione correctamente. También asume que el usuario no sabe lo suficiente sobre Excel para omitir macros manteniendo presionada la tecla Shift cuando se inicia el programa. Si sospecha que el usuario puede saber tanto, deberá realizar más pasos, como los siguientes:
-
Asegúrese de que una sola hoja de trabajo esté visible en el libro de trabajo. Todas las demás hojas de trabajo deben estar «muy ocultas» para que el usuario no pueda mostrarlas siguiendo los pasos normales.
-
Si la macro determina que el usuario está autorizado, oculte la única hoja de trabajo visible y haga visibles todas las hojas de trabajo «muy ocultas».
-
Cuando el libro de trabajo esté cerrado, invierta el proceso y oculte todas las hojas de trabajo (establezca la propiedad Visible de cada una de ellas en xlSheetVeryHidden) y vuelva a hacer visible la hoja de trabajo única.
El uso de este enfoque asegura que incluso si el usuario deshabilita las macros (manteniendo presionada la tecla Mayús durante el inicio), no puede acceder a las hojas de trabajo porque se requiere una macro para hacerlas visibles.
Puede utilizar una variación del enfoque anterior para que, en lugar de depender de la función Environ, pueda hacer que la macro verifique la presencia de un archivo predeterminado en una ubicación particular del sistema.
Esto significa, por supuesto, que necesita una forma de tener en sus manos el sistema con anticipación para colocar el archivo adecuado en la ubicación adecuada.
Finalmente, sea cual sea el enfoque basado en macros que elija, debe asegurarse de que el proyecto de VBA para el libro de trabajo esté protegido con una contraseña. Esto evitará que alguien vaya y mire su código de macro para averiguar qué está pasando con la protección.
Hay algo más que siempre debe tener en cuenta cuando intente proteger sus libros de trabajo: cualquier protección que ponga en su lugar siempre se puede eludir con suficiente conocimiento y paciencia. Si sus usuarios no son tan sofisticados técnicamente, entonces no debería tener problemas. Sin embargo, si saben mucho sobre Excel y macros, entonces todas las apuestas están canceladas.
_Nota: _
Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.
link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador]
.
ExcelTips es su fuente de formación rentable en Microsoft Excel.
Este consejo (13666) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365.