我想要一个按钮将活动工作表保存到新工作簿,提示用户输入文件名和路径。它需要保存为.xlsm
我有这个,但有这个问题。
如果文件名已经存在,则会提示调试并打开vba代码。
Private Sub SaveBarList_Click()
ActiveSheet.Copy
With ActiveSheet.UsedRange
.Copy
.PasteSpecial xlValues
.PasteSpecial xlFormats
End With
Application.CutCopyMode = False
Dim DTAddress As String
DTAddress = CreateObject("WScript.Shell").SpecialFolders("Desktop") & Application.PathSeparator
ActiveWorkbook.SaveAs Filename:= Application.GetSaveAsFilename
ActiveWorkbook.Close
End Sub
答案 0 :(得分:0)
这是我的想法:
Sub SaveAsMacro()
Dim strDir As String
'Show standard save as dialogue box
With Application.FileDialog(msoFileDialogSaveAs)
If .Show = -1 Then
strDir = .SelectedItems(1)
End If
End With
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=strDir
Application.DisplayAlerts = True
End Sub
基本上首先获取文件名(如果覆盖则弹出警告),然后提前推土机并保存,无论什么(关闭警告后)。
或者,如果您不关心警告并且只想抑制它,您可以更简单地使用原始代码并关闭警告:
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= Application.GetSaveAsFilename
Application.DisplayAlerts = True