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:
- 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!
- Você precisa remover isso da linha de comando,
InitialFileName:=
Razão:Você está tentando salvar o arquivo com o nome fornecido, IntialName = "Sample Output"
.
- 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.
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.