Сначала получите путь и имя файла, используя свойство SelectedItems объекта FileDialog. Затем сохраните книгу, используя метод SaveAs объекта Workbook, а затем закройте ее, используя метод Close объекта Workbook.
Другие предложения
1) Включите ScreenUpdating в начале вашего макроса, чтобы все происходило в фоновом режиме и делало вещи более эффективными. Затем снова включите его в конце.
2) Предложите пользователю выбрать путь перед созданием копии листа. В противном случае у вас останется только что созданная рабочая книга, если пользователь отменит.
3) Нет необходимости указывать ObFD в операторе With/End With
, поскольку оператор уже ссылается на ObFD. Так, например, вы должны использовать .InitialFileName
вместо ObFD.InitialFilename
.
4) Избегайте именования вашего свободного времени, так как в VBA есть функция с именем Time.
Вот ваш макрос, который были внесены соответствующие изменения ...
Option Explicit
Sub Save_As()
Application.ScreenUpdating = False
Dim MyTime As String
MyTime = Format(Now, "ddmmyyyy_hhmmss")
Dim FileName As String
FileName = ActiveWorkbook.Name & "_" & MyTime
Dim ObFD As FileDialog
Set ObFD = Application.FileDialog(msoFileDialogSaveAs)
With ObFD
.Title = "Choose a path and export this file"
.ButtonName = "E&xport"
.InitialFileName = "C:\" & FileName
.FilterIndex = 2
.InitialView = msoFileDialogViewDetails
.Show
If .SelectedItems.Count = 0 Then
Exit Sub
Else
Dim PathAndFilename As String
PathAndFilename = .SelectedItems(1)
End If
End With
ActiveWorkbook.Sheets("Sheet1").Copy
ActiveWorkbook.SaveAs FileName:=PathAndFilename, FileFormat:=xlOpenXMLWorkbookMacroEnabled
ActiveWorkbook.Close savechanges:=False
Application.ScreenUpdating = True
End Sub