Cuando guarda un libro de Excel mediante programación, un comando de menú no se ejecuta en el evento BeforeSave

Síntomas

Guardar un libro en Microsoft Excel mediante programación. Si se intenta ejecutar un comando de menú en un evento, como el evento BeforeSave, no ejecute el comando de menú.

Causa

Este problema se produce porque no se puede anidar un comando de menú en el código cuando se llama mediante programación a un comando de menú, como el comando Guardar . El comando de menú en el evento BeforeSave específicamente se puede ejecutar.

Solución alternativa

Para evitar este problema, guarde manualmente el libro. Para guardar el libro, utilice uno de los procedimientos siguientes, según corresponda para la versión de Excel que esté ejecutando:
  • En Microsoft Office Excel 2007, haga clic en el Botón de Microsoft Officey, a continuación, haga clic en Guardar.
  • En Microsoft Office 2003 y en versiones anteriores de Excel, haga clic en Guardar en el menú archivo .
Cuando utiliza esta solución, puede realizar cualquiera de los siguientes comandos de menú en el evento BeforeSave:
  • Cualquier comando del menú formato .
  • El comando Borrar del menú Edición .
  • El comando Eliminar en el menú Edición .
  • El comando Eliminar filas en el menú Edición .
  • El comando Imprimir del menú archivo .

Más información

Microsoft proporciona ejemplos de programación únicamente con fines ilustrativos, sin ninguna garantía expresa o implícita. Esto incluye, pero no se limita, a las garantías implícitas de comerciabilidad o idoneidad para un propósito particular. Este artículo asume que está familiarizado con el lenguaje de programación que se muestra y con las herramientas que se utilizan para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos que cumplan sus requisitos específicos.

Para reproducir este problema, siga estos pasos según corresponda para la versión de Excel que esté ejecutando.

Excel 2007

  1. Abra un nuevo libro en Excel.
  2. Haga clic en el Botón de Microsoft Office, haga clic en Guardar como, haga clic en Libro de Excel habilitado para macros (*.xlsm) en el cuadro Guardar como tipo , escriba un nombre de archivo en el cuadro nombre de archivo y, a continuación, haga clic en Guardar.
  3. Escriba algún texto en la celda A1 y, a continuación, presione ENTRAR.
  4. Haga clic en la ficha Programador . Si la ficha Programador no aparece, siga estos pasos:
    1. Haga clic en el botón de Microsoft Office y, a continuación, haga clic en Opciones de Excel.
    2. Haga clic en Popular.
    3. Haga clic para activar la casilla de verificación Mostrar ficha Programador en la cinta de opciones .
    4. Haga clic en Aceptar para cerrar el cuadro de diálogo Opciones de Excel .
  5. En el grupo de código para iniciar el Editor de Visual Basic, haga clic en Visual Basic .
  6. En el panel proyecto - VBAProject , haga doble clic en ThisWorkbook.
  7. Siga estos pasos:
    1. En el cuadro objeto , haga clic en libro.
    2. En el cuadro procedimiento , haga clic en BeforeSave.
    3. Agregue el siguiente código de macro para el evento BeforeSave:
         Range("a1").ClearContents
    4. En el código de macro que escribió en el paso 7c, escriba el siguiente código de macro:
      Public Sub Test()
      ThisWorkbook.Save

      End Sub

  8. En el libro, haga clic en el Botón de Microsoft Officey, a continuación, haga clic en Guardar.

    Se borra el texto en la celda A1.
  9. Haga clic en Cancelar para cerrar el cuadro de diálogo Guardar como .
  10. Escriba algún texto en la celda A1 y, a continuación, presione ENTRAR.
  11. En la ficha Programador , haga clic en Macros en el grupo de código .
  12. Haga clic en la macro ThisWorkbook.Test y, a continuación, haga clic en Ejecutar.

    El texto en la celda A1 no se borra cuando se guarda el libro.

Excel 2003 y versiones anteriores de Excel

  1. Abra un nuevo libro en Excel.
  2. Escriba algún texto en la celda A1 y, a continuación, presione ENTRAR.
  3. En el menú Herramientas , elija Macro y, a continuación, haga clic en Editor de Visual Basic.
  4. En el panel proyecto - VBAProject , haga doble clic en ThisWorkbook.
  5. Siga estos pasos:
    1. En el cuadro objeto , haga clic en libro.
    2. En el cuadro procedimiento , haga clic en BeforeSave.
    3. Agregue el siguiente código de macro para el evento BeforeSave:
         Range("a1").ClearContents
    4. En el código de macro que escribió en el paso 5c, escriba el siguiente código de macro:
      Public Sub Test()
      ThisWorkbook.Save

      End Sub

  6. En el libro, haga clic en Guardar en el menú archivo .

    Se borra el texto en la celda A1.
  7. Haga clic en Cancelar para cerrar el cuadro de diálogo Guardar como .
  8. Escriba algún texto en la celda A1 y, a continuación, presione ENTRAR.
  9. En el menú Herramientas, señale Macro y, a continuación, haga clic en Macros.
  10. Haga clic en la macro ThisWorkbook.Test y, a continuación, haga clic en Ejecutar.

    El texto en la celda A1 no se borra cuando se guarda el libro.
Propiedades

Id. de artículo: 898511 - Última revisión: 17 ene. 2017 - Revisión: 1

Comentarios