El cuadro de diálogo no se muestra cuando ejecuto la macro para guardar un documento

El cuadro de diálogo no se muestra cuando ejecuto la macro para guardar un documento

Este es el código que utilicé. El cuadro de diálogo sólo aparece cuando ejecuto esto en el diseñador. Cuando cierro el diseñador y ejecuto la macro, solo guarda el libro, pero quiero que aparezca el cuadro de diálogo cada vez que ejecuto esta macro. Cualquier ayuda/sugerencia por favor

Sub SaveAs()
    Dim IntialName As String
    Dim sFileSaveName As Variant
    IntialName = "Sample Output"
    sFileSaveName = Application.GetSaveAsFilename(InitialFileName:=InitialName, fileFilter:="Excel Files (*.xlsm), *.xlsm")

    If sFileSaveName <> False Then
        ActiveWorkbook.SaveAs sFileSaveName
    End If
End Sub

Respuesta1

Su Código necesita algunas correcciones:

  1. Dado que el nombre de la subrutina utilizado por usted entra en conflicto con una de las palabras de reserva (comando)Guardar como, por lo tanto, Excel devuelve este error.

ingrese la descripción de la imagen aquí

  1. Debes eliminar esto de la línea de comando,InitialFileName:=

Razón:Está intentando guardar el archivo con el nombre dado IntialName = "Sample Output".

  1. El último es un error tipográfico InitialName.

Correcciones sugeridas:

  • Cambie el nombre de la subrutina, por ejemplo,GuardarMiArchivoComoo cualquier otro queGuardar como.

  • Reemplace esta línea,sFileSaveName = Application.GetSaveAsFilename(InitialFileName:=InitialName, fileFilter:="Excel Files (*.xlsm), *.xlsm")

Con este,

sFileSaveName = Application.GetSaveAsFilename(IntialName, fileFilter:="Excel Files (*.xlsm), *.xlsm")

  • Obtienes aviso.

ingrese la descripción de la imagen aquí

  • Y este debería ser el código completo a utilizar.

    Sub SaveMyFileAs()
    
      Dim IntialName As String
      Dim sFileSaveName As Variant
    
      IntialName = "Sample Output"
    sFileSaveName = Application.GetSaveAsFilename(IntialName, fileFilter:="Excel Files (*.xlsm), *.xlsm")
    
      If sFileSaveName <> False Then
        ActiveWorkbook.SaveAs sFileSaveName
      End If
    
       End Sub
    

NÓTESE BIENEste código se puede utilizar como,Libro de trabajo_antes de cerrarevento también.

información relacionada