A caixa de diálogo não aparece quando executo a macro para salvar um documento

A caixa de diálogo não aparece quando executo a macro para salvar um documento

Este é o código que usei. A caixa de diálogo só aparece quando executo isso no designer. Quando fecho o designer e executo a macro, ele salva apenas a pasta de trabalho, mas quero que a caixa de diálogo apareça sempre que eu executar essa macro. Qualquer ajuda/sugestão 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

Responder1

Seu código precisa de algumas correções:

  1. Como o nome da sub-rotina usado por você entra em conflito com uma das palavras de reserva (comando)Salvar como, portanto o Excel retorna este erro!

insira a descrição da imagem aqui

  1. Você precisa remover isso da linha de comando,InitialFileName:=

Razão:Você está tentando salvar o arquivo com o nome fornecido, IntialName = "Sample Output".

  1. O último é o erro de digitação, InitialName.

Correções sugeridas:

  • Renomeie a sub-rotina, por exemplo,Salvar meu arquivo comoou qualquer outro que nãoSalvar como.

  • Substitua esta linha,sFileSaveName = Application.GetSaveAsFilename(InitialFileName:=InitialName, fileFilter:="Excel Files (*.xlsm), *.xlsm")

com este,

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

  • Você recebe o Prompt.

insira a descrição da imagem aqui

  • E este deve ser o código completo a ser usado.

    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
    

ObservaçãoEste código pode ser usado como,Pasta de trabalho_BeforeCloseevento também.

informação relacionada