Вы должны фактически явно указать Excel, чтобы сохранить книгу.
Sub Mac2()
Dim varResult As Variant
Dim ActBook As Workbook
'displays the save file dialog
varResult = Application.GetSaveAsFilename(FileFilter:= _
"Excel Files (*.xlsx), *.xlsx", Title:="Save PO", _
InitialFileName:="\\showdog\service\Service_job_PO\")
'checks to make sure the user hasn't canceled the dialog
If varResult <> False Then
ActiveWorkbook.SaveAs Filename:=varResult, _
FileFormat:=xlWorkbookNormal
Exit Sub
End If
End Sub
Использование GetSaveAsFilename
получает только путь к файлу для сохранения, в то время как метод SaveAs
фактически сохраняет книгу.
После некоторого рассмотрения, я могу предложить использовать метод SaveCopyAs вместо просто SaveAs. Как следует из названия, это оставит вашу оригинальную книгу в такте и сохранит копию. Сделать это довольно просто.
Вы бы заменить
ActiveWorkbook.SaveAs Filename:=varResult, _
FileFormat:=xlWorkbookNormal
С
ActiveWorkbook.SaveCopyAs Filename:=varResult
Одно последнее соображение, я хотел бы добавить, что если вы сохраните с поддержкой макросов рабочей книги в качестве формата XLSX (либо SaveAs или SaveCopyAs) то вы потеряете макросы в исходной книге, если вы используете SaveAs или в копии, которая сохраняется, если вы используете SaveCopyAs. Я бы предпочел сохранить файл как .xlsm вместо этого, если вам нужны макросы.
Этот код получает только имя файла. Затем вам нужно вызвать «Сохранить», используя это имя файла «Если varResult <> False». –