{"id":16379,"date":"2021-08-10T10:21:25","date_gmt":"2021-08-10T15:21:25","guid":{"rendered":"https:\/\/www.perucontable.com\/excelcontable\/?p=16379"},"modified":"2023-11-14T20:21:10","modified_gmt":"2023-11-15T01:21:10","slug":"macro-para-impedir-que-se-guarde-un-archivo-de-excel","status":"publish","type":"post","link":"https:\/\/www.perucontable.com\/excelcontable\/macro-para-impedir-que-se-guarde-un-archivo-de-excel\/","title":{"rendered":"MACRO PARA IMPEDIR QUE SE GUARDE UN ARCHIVO DE EXCEL"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"477\" height=\"289\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-36.png\" alt=\"\" class=\"wp-image-16380\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-36.png 477w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-36-300x182.png 300w\" sizes=\"(max-width: 477px) 100vw, 477px\" \/><\/figure><\/div>\n\n\n<p>Has creado un archivo de Excel con mucha funcionalidad y no deseas que otra persona guarde alg\u00fan cambio o ingrese nuevos datos en el archivo. Aunque existen m\u00e9todos para proteger el contenido de las celdas, en esta ocasi\u00f3n te mostrar\u00e9 una alternativa para impedir que un usuario guarde el archivo de Excel.<\/p>\n\n\n\n<p>Otro ejemplo, si mandamos archivos por correo electr\u00f3nico o los compartimos mediante una red local y no queremos que quienes usen el archivo, aunque hagan modificaciones en \u00e9l, lo puedan guardar. Esto se realiza mediante macros de eventos. Recordemos que los eventos son acciones propias de Excel, y que al suceder, podemos asignarle una macro. Por ejemplo est\u00e1 el evento de Activar hoja, Antes de imprimir, Al modificar celdas, etc. Recordemos que al ser mediante macros, la seguridad de Excel debe permitir la ejecuci\u00f3n de macros.<\/p>\n\n\n\n<h2><strong>ADVERTENCIA IMPORTANTE SOBRE LA MACRO<\/strong><\/h2>\n\n\n\n<p>El m\u00e9todo utilizado en este art\u00edculo supone que el usuario tendr\u00e1 habilitada la ejecuci\u00f3n de macros en Excel, de lo contrario el c\u00f3digo jam\u00e1s ser\u00e1 ejecutado y \u00e9sta t\u00e9cnica no podr\u00e1 evitar que el archivo sea guardado.<\/p>\n\n\n\n<p>Considera que las opciones de seguridad de Excel son muy b\u00e1sicas y nunca es recomendable almacenar informaci\u00f3n confidencial en un libro de trabajo de Excel.<\/p>\n\n\n\n<h2><strong>EL EVENTO&nbsp;<em>BEFORESAVE<\/em>&nbsp;EN EXCEL<\/strong><\/h2>\n\n\n\n<p>Si eres un usuario con experiencia en la programaci\u00f3n de Excel sabr\u00e1s que tenemos a nuestra disposici\u00f3n varios&nbsp;<em>Eventos<\/em>&nbsp;que nos permiten ejecutar c\u00f3digo en el momento preciso en que se realiza alguna acci\u00f3n en Excel.<\/p>\n\n\n\n<p>Ese el caso del evento&nbsp;<em>BeforeSave<\/em>&nbsp;que nos permitir\u00e1 ejecutar c\u00f3digo VBA antes de guardar un libro de Excel. Para nuestro ejemplo, utilizaremos este evento para evitar que el usuario guarde el archivo. Pero antes de escribir ese c\u00f3digo haremos una prueba para dejar en claro el momento exacto en que dicho bloque de c\u00f3digo ser\u00e1 ejecutado.<\/p>\n\n\n\n<p>Es necesario abrir el&nbsp;<em>Editor de Visual Basic<\/em>&nbsp;y para eso puedes pulsar el atajo de teclado ALT + F11. Otra opci\u00f3n es hacer clic derecho sobre el nombre de alguna de las hojas del libro y elegir la opci\u00f3n&nbsp;<em>Ver c\u00f3digo<\/em>.<\/p>\n\n\n\n<p>Una vez que tienes abierto el&nbsp;<em>Editor de Visual Basic<\/em>&nbsp;deber\u00e1s hacer doble clic en el objeto&nbsp;<em>ThisWorkbook<\/em>&nbsp;dentro del panel del proyecto.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.exceltotal.com\/0604\/macro-para-impedir-guardar-archivo-excel-01.png\" alt=\"Macro para impedir guardar archivo Excel\"\/><\/figure><\/div>\n\n\n<p>Posteriormente elige las opciones&nbsp;<em>Workbook<\/em>&nbsp;y&nbsp;<em>BeforeSave<\/em>&nbsp;de las listas desplegables del panel derecho tal como se muestra en la siguiente imagen:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.exceltotal.com\/0604\/macro-para-impedir-guardar-archivo-excel-02.png\" alt=\"Evitar guardar archivo Excel\"\/><\/figure><\/div>\n\n\n<p>La prueba la realizaremos con una sola instrucci\u00f3n que mostrar\u00e1 una caja de texto con el mensaje \u201cEvento BeforeSave\u201d. Aseg\u00farate de tener el siguiente c\u00f3digo en el panel derecho del Editor de Visual Basic:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"861\" height=\"115\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-37.png\" alt=\"\" class=\"wp-image-16382\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-37.png 861w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-37-300x40.png 300w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-37-768x103.png 768w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-37-696x93.png 696w\" sizes=\"(max-width: 861px) 100vw, 861px\" \/><\/figure><\/div>\n\n\n<p>Ahora regresa a la ventana de Excel y pulsa el bot\u00f3n Guardar que se encuentra en la barra de herramientas de acceso r\u00e1pido. Como resultado obtendremos un mensaje como el siguiente:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.exceltotal.com\/0604\/macro-para-impedir-guardar-archivo-excel-03.png\" alt=\"Impedir guardar libro de Excel\"\/><\/figure><\/div>\n\n\n<p>Haz clic en el bot\u00f3n Aceptar para cerrar el mensaje y ahora ve a la pesta\u00f1a Archivo &gt; Guardar como y al momento de elegir una carpeta para guardar el archivo se mostrar\u00e1 el mismo mensaje:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.exceltotal.com\/0604\/macro-para-impedir-guardar-archivo-excel-04.png\" alt=\"Impedir el comando Guardar como en Excel\"\/><\/figure><\/div>\n\n\n<p>La conclusi\u00f3n de este breve ejercicio es que nuestro c\u00f3digo se ejecutar\u00e1 al utilizar el comando&nbsp;<em>Guardar<\/em>&nbsp;o el comando&nbsp;<em>Guardar como<\/em>.<\/p>\n\n\n\n<h2><strong>IMPEDIR GUARDAR EL ARCHIVO EXCEL<\/strong><\/h2>\n\n\n\n<p>Para evitar guardar el archivo ser\u00e1 suficiente con asignar el valor&nbsp;<em>True<\/em>&nbsp;al argumento&nbsp;<em>Cancel<\/em>&nbsp;de la siguiente manera:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"867\" height=\"137\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-38.png\" alt=\"\" class=\"wp-image-16383\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-38.png 867w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-38-300x47.png 300w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-38-768x121.png 768w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-38-696x110.png 696w\" sizes=\"(max-width: 867px) 100vw, 867px\" \/><\/figure>\n\n\n\n<p>Es importante seguir un orden espec\u00edfico para guardar esta instrucci\u00f3n en nuestro archivo ya que t\u00fa mismo podr\u00edas impedir guardar el c\u00f3digo anterior. Mi sugerencia es seguir los siguientes pasos:<\/p>\n\n\n\n<ol>\n<li>Crear y guardar el libro habilitado para macros solo incluyendo la instrucci\u00f3n&nbsp;<em>MsgBox<\/em>.<\/li>\n\n\n\n<li>Cerrar el archivo y volver a abrirlo pero esta vez deshabilitando las macros.<\/li>\n\n\n\n<li>Agregar la l\u00ednea de c\u00f3digo&nbsp;<em>Cancel = True<\/em>&nbsp;y guardar el archivo.<\/li>\n<\/ol>\n\n\n\n<p>La pr\u00f3xima vez que abras el archivo y habilites las macros, el c\u00f3digo anterior impedir\u00e1 que se guarde el archivo.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.exceltotal.com\/0604\/macro-para-impedir-guardar-archivo-excel-05.png\" alt=\"Macro para evitar guardar cambio en hoja de Excel\"\/><\/figure><\/div>\n\n\n<h2><strong>DISTINGUIR ENTRE&nbsp;<em>GUARDAR<\/em>&nbsp;Y&nbsp;<em>GUARDAR COMO<\/em><\/strong><\/h2>\n\n\n\n<p>El c\u00f3digo del ejemplo anterior se ejecuta con el comando&nbsp;<em>Guardar<\/em>&nbsp;y con el comando&nbsp;<em>Guardar como<\/em>. Es probable que en alguna ocasi\u00f3n necesites impedir solamente alguno de los dos comandos y en ese caso deber\u00e1s evaluar el valor del argumento&nbsp;<em>SaveAsUI<\/em>&nbsp;del evento&nbsp;<em>BeforeSave<\/em>.<\/p>\n\n\n\n<p>El argumento&nbsp;<em>SaveAsUI<\/em>&nbsp;ser\u00e1 VERDADERO cuando se ejecute el comando&nbsp;<em>Guardar como<\/em>&nbsp;y tendr\u00e1 el valor FALSO cuando se ejecute el comando&nbsp;<em>Guardar<\/em>. Un ejemplo de uso ser\u00eda cuando quieres impedir que se guarde el archivo actual pero deseas permitir que el usuario guarde el archivo con otro nombre. En ese caso nuestro c\u00f3digo ser\u00e1 el siguiente:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"857\" height=\"182\" src=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-39.png\" alt=\"\" class=\"wp-image-16384\" srcset=\"https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-39.png 857w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-39-300x64.png 300w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-39-768x163.png 768w, https:\/\/www.perucontable.com\/excelcontable\/wp-content\/uploads\/2021\/08\/image-39-696x148.png 696w\" sizes=\"(max-width: 857px) 100vw, 857px\" \/><\/figure><\/div>\n\n\n<p>El usuario podr\u00e1 utilizar el comando&nbsp;<em>Guardar como<\/em>, pero si utiliza el comando&nbsp;<em>Guardar<\/em>, la macro se lo impedir\u00e1.<\/p>\n\n\n\n<h2><strong>PROTEGER C\u00d3DIGO DE LA MACRO<\/strong><\/h2>\n\n\n\n<p>Es posible proteger el c\u00f3digo de la macro de manera que no pueda ser alterado f\u00e1cilmente por otro usuario. Para hacerlo, abre el Editor de Visual Basic (ALT + F11) y haz clic derecho sobre el Proyecto VBA y elige la opci\u00f3n&nbsp;<em>Propiedades de VBAProject<\/em>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.exceltotal.com\/0604\/macro-para-impedir-guardar-archivo-excel-06.png\" alt=\"Impedir guardar cambios en un libro de Excel\"\/><\/figure><\/div>\n\n\n<p>En el cuadro de di\u00e1logo&nbsp;<em>Propiedades del proyecto<\/em>, selecciona la pesta\u00f1a&nbsp;<em>Protecci\u00f3n<\/em>&nbsp;y marca la casilla de verificaci\u00f3n&nbsp;<em>Bloquear proyecto para visualizaci\u00f3n<\/em>&nbsp;y adem\u00e1s coloca una contrase\u00f1a para proteger el proyecto.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.exceltotal.com\/0604\/macro-para-impedir-guardar-archivo-excel-07.png\" alt=\"Evitar que el usuario guarde cambios en Excel\"\/><\/figure><\/div>\n\n\n<p>Si alg\u00fan usuario ingresa al Editor de Visual Basic e intenta visualizar el c\u00f3digo de la macro, se le pedir\u00e1 la contrase\u00f1a que hemos establecido. Recuerda que este cambio en la protecci\u00f3n de la macro deber\u00e1s realizarlo antes de evitar el guardado del archivo con la instrucci\u00f3n&nbsp;<em>Cancel = True<\/em>&nbsp;o de lo contrario no podr\u00e1s guardar los cambios en el archivo.<\/p>\n\n\n\n<p><strong>Art\u00edculo que te recomendamos leer:<\/strong><br><strong><a href=\"https:\/\/www.perucontable.com\/excelcontable\/convertir-numero-a-fecha-en-excel\/\" data-type=\"URL\" data-id=\"https:\/\/www.perucontable.com\/excelcontable\/convertir-numero-a-fecha-en-excel\/\">CONVERTIR N\u00daMERO A FECHA EN EXCEL<\/a><\/strong><\/p>\n\n\n\n<p><strong>\u00bfQu\u00e9 te pareci\u00f3 nuestra blog? Com\u00e9ntanos.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Has creado un archivo de Excel con mucha funcionalidad y no deseas que otra persona guarde alg\u00fan cambio o ingrese nuevos datos en el archivo. Aunque existen m\u00e9todos para proteger el contenido de las celdas, en esta ocasi\u00f3n te mostrar\u00e9 una alternativa para impedir que un usuario guarde el archivo de Excel. Otro ejemplo, si [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":16386,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[108,12,1,67,25],"tags":[],"yst_prominent_words":[188,133,145],"_links":{"self":[{"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/posts\/16379"}],"collection":[{"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/comments?post=16379"}],"version-history":[{"count":6,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/posts\/16379\/revisions"}],"predecessor-version":[{"id":17455,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/posts\/16379\/revisions\/17455"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/media\/16386"}],"wp:attachment":[{"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/media?parent=16379"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/categories?post=16379"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/tags?post=16379"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/www.perucontable.com\/excelcontable\/wp-json\/wp\/v2\/yst_prominent_words?post=16379"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}