将活动工作表保存到新工作簿

时间:2015-04-17 19:41:58

标签: excel-vba vba excel

我想要一个按钮将活动工作表保存到新工作簿,提示用户输入文件名和路径。它需要保存为.xlsm

我有这个,但有这个问题。

  1. 如果文件名已经存在,则会提示调试并打开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
    

1 个答案:

答案 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
相关问题