【问题标题】:SaveAs works unless user selects file in SaveAsDialog除非用户在 SaveAsDialog 中选择文件,否则 SaveAs 有效
【发布时间】:2015-06-02 14:57:42
【问题描述】:

我正在使用下面的代码,以便用户可以“导出”他们正在处理的工作簿。基本上,他们在只读主工作簿中工作,当他们单击下面的子时,它会执行 SaveAs 到用户选择的文件夹,其中的文件名是:Sheets("Master").Range("B5 ")

这很好用,唯一的问题是如果用户选择的文件夹中有一个“.xlsm”文件并且他们单击它以获取文件名,则保存的工作簿名称将变为“XXXXXX.xlsm.xlsm”。如果用户没有点击任何东西并点击保存,它就可以正常工作。

有什么想法吗?如果不清楚,请告诉我

Sub ExportTrip()
Dim ActSheet As Worksheet
Dim ActBook As Workbook
Dim CurrentFile As String
Dim NewFile As String

Application.ScreenUpdating = False    ' Prevents screen refreshing.

CurrentFile = ThisWorkbook.FullName

NewFile = Application.GetSaveAsFilename( _
    InitialFileName:=Sheets("Master").Range("B5"))

If NewFile <> "" And NewFile <> "False" Then
    ActiveWorkbook.SaveAs filename:=NewFile & "xlsm", _
        FileFormat:=52, _
        Password:="", _
        WriteResPassword:="", _
        ReadOnlyRecommended:=False, _
        CreateBackup:=False

    Set ActBook = ActiveWorkbook
    Workbooks.Open CurrentFile
Application.DisplayAlerts = False
    ActBook.Close
Application.DisplayAlerts = True
End If

Application.ScreenUpdating = True
End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    想通了,需要添加文件过滤器。见下文:

    Sub ExportTrip()
        Dim ActSheet As Worksheet
        Dim ActBook As Workbook
        Dim CurrentFile As String
        Dim NewFile As String
    
        Application.ScreenUpdating = False    ' Prevents screen refreshing.
    
        CurrentFile = ThisWorkbook.FullName   ' saves filename of current workbook
    
        NewFile = Application.GetSaveAsFilename( _
            InitialFileName:=Sheets("Master").Range("B5"), _
            FileFilter:="ARMS Export *.xlsm (*.xlsm),")   ' gets filename for exported workbook
    
           If NewFile <> "" And NewFile <> "False" Then         'if user doesn't pick name
            ActiveWorkbook.SaveAs filename:=NewFile, _
                FileFormat:=52, _
                Password:="", _
                WriteResPassword:="", _
                ReadOnlyRecommended:=False, _
                CreateBackup:=False
    
            Set ActBook = ActiveWorkbook 'declares variable for open workbook
            Workbooks.Open CurrentFile   'reopens original workbook
        Application.DisplayAlerts = False
            ActBook.Close                'closes exported workbook
        Application.DisplayAlerts = True
        End If
    
        Application.ScreenUpdating = True
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      • 1970-01-01
      • 2012-01-22
      • 1970-01-01
      相关资源
      最近更新 更多