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

Seleccione idioma Seleccione idioma
Id. de artículo: 898511 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Síntomas

Mediante programación, se guarda un libro en Microsoft Excel. Si se intenta realizar un comando de menú en un evento, como por ejemplo, el evento BeforeSave, no se ejecuta el comando de menú.

Causa

Este problema se produce porque no puede anidarse 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 impide la ejecución.

Solución

Para evitar este problema, guarde manualmente el libro. Para guardar manualmente el libro, utilice uno de los procedimientos siguientes, según la versión de Excel que esté ejecutando:
  • En Microsoft Office Excel 2007, haga clic en el Botón de Microsoft Office y, 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 se 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 en el 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 con fines ilustrativos únicamente, sin ninguna garantía tanto expresa como implícita. Esto incluye, entre otras, las garantías implícitas de comerciabilidad e idoneidad para un fin determinado. Este artículo se supone 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 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 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 no se muestra la ficha Programador , 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. En 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. Haga clic en Visual Basic en el grupo de código para iniciar el Editor de 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 código de macro siguiente al evento BeforeSave:
         Range("a1").ClearContents
    4. En el código de macro que escribió en el paso 7 c, 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 Office y, a continuación, haga clic en Guardar .

    El texto en la celda A1 se borra.
  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 código de macro siguiente al evento BeforeSave:
         Range("a1").ClearContents
    4. En el código de macro que escribió en el paso 5 c, 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 .

    El texto en la celda A1 se borra.
  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 , elija 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: sábado, 20 de enero de 2007 - Versión: 4.2
La información de este artículo se refiere a:
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
Palabras clave: 
kbmt kbexpertiseinter kbmacro kbvba kbprogramming kbautomation kbtshoot kbprb KB898511 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 898511

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com