![Диалоговое окно не отображается при запуске макроса для сохранения документа](https://rvso.com/image/1597840/%D0%94%D0%B8%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%B2%D0%BE%D0%B5%20%D0%BE%D0%BA%D0%BD%D0%BE%20%D0%BD%D0%B5%20%D0%BE%D1%82%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B0%D0%B5%D1%82%D1%81%D1%8F%20%D0%BF%D1%80%D0%B8%20%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B5%20%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81%D0%B0%20%D0%B4%D0%BB%D1%8F%20%D1%81%D0%BE%D1%85%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0.png)
Это код, который я использовал. Диалоговое окно появляется только тогда, когда я запускаю его в конструкторе. Когда я закрываю конструктор и запускаю макрос, он только сохраняет рабочую книгу, но я хочу, чтобы диалоговое окно появлялось каждый раз, когда я запускаю этот макрос. Любая помощь/предложения, пожалуйста
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
решение1
Вашему Кодексу необходимо внести несколько исправлений:
- Поскольку используемое вами имя подпрограммы конфликтует с одним из резервных слов (командой)Сохранить как, поэтому Excel возвращает эту ошибку!
- Вам нужно удалить это из командной строки,
InitialFileName:=
Причина:Вы пытаетесь сохранить файл с указанным именем, IntialName = "Sample Output"
.
- Последнее — опечатка
InitialName
.
Предлагаемые исправления:
Переименуйте подпрограмму, например,СохранитьМойФайлКакили любой другой, кромеСохранить как.
Замените эту строку,
sFileSaveName = Application.GetSaveAsFilename(InitialFileName:=InitialName, fileFilter:="Excel Files (*.xlsm), *.xlsm")
с этим,
sFileSaveName = Application.GetSaveAsFilename(IntialName, fileFilter:="Excel Files (*.xlsm), *.xlsm")
- Вы получаете Propmt.
И это должен быть полный код для использования.
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
Примечание.Этот код можно использовать как,Workbook_BeforeCloseсобытие также.