Mensaje de error al ejecutar una macro de Visual Basic para aplicaciones en Excel: "método ' SaveAs ' del objeto ' _Worksheet ' failed"


Síntomas


Al ejecutar una macro de Visual Basic para aplicaciones en Microsoft Excel, es posible que reciba el siguiente mensaje de error o similar:
Error en tiempo de ejecución ' 1004 ': error en el método ' SaveAs ' del objeto ' _Worksheet '

Causa


Este comportamiento puede producirse cuando se cumplen las dos condiciones siguientes:
  • Está usando una macro de Visual Basic para aplicaciones para guardar una hoja de cálculo.-y-
  • Especifique el formato de archivo como la constante xlWorkbookNormal.
Por ejemplo, el código siguiente provoca este error:
Sub A()   Dim myNewSheet As Worksheet   Set myNewSheet = ActiveSheet   FileNameBin = "c:\ABC"   myNewSheet.SaveAs Filename:=FileNameBin, FileFormat:=xlWorkbookNormalEnd Sub

Solución alternativa


Microsoft proporciona ejemplos de programación con fines ilustrativos únicamente, sin ninguna garantía tanto expresa como implícita, incluyendo, pero sin limitarse, a las garantías implícitas de comerciabilidad e idoneidad para un fin determinado. En este artículo se da por supuesto que ya conoce el lenguaje de programación que se muestra, así como las herramientas empleadas para crear y depurar procedimientos. Los profesionales 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 adaptados a sus necesidades específicas. Si su experiencia en el campo de la programación es limitada, puede ser aconsejable ponerse en contacto con un Microsoft Certified Partner o con Microsoft Advisory Services. Para obtener más información al respecto, visite estos sitios web de Microsoft:Microsoft Certified Partners - https://partner.microsoft.com/global/30000104Microsoft Advisory Services: https://support.microsoft.com/es-es/gp/advisoryservicePara obtener más información acerca de las opciones de soporte técnico disponibles y cómo ponerse en contacto con Microsoft, consulte el siguiente sitio Web de Microsoft:http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMSPara evitar este comportamiento, cambie la especificación de formato de archivo de la constante xlWorkbookNormal a 1. El código de ejemplo funciona normalmente si cambia a:
Sub A()   Dim myNewSheet As Worksheet   Set myNewSheet = ActiveSheet   FileNameBin = "c:\ABC"   myNewSheet.SaveAs Filename:=FileNameBin, FileFormat:=1End Sub
NOTA Aunque esté guardando una hoja de cálculo, todas las hojas de cálculo del libro seleccionado se guardan cuando el formato de archivo se establece en xlWorkbookNormal o 1.

Estado


Microsoft ha confirmado que este es un problema en los productos Microsoft que aparecen enumerados al principio de este artículo.