msoFileDialogSave不写文件Excel VBA

时间:2016-02-21 22:55:29

标签: excel-vba vba excel

使用以下代码复制主工作表上的某些数据,然后添加新工作簿,然后粘贴数据。然后我需要提示使用msoFileDialogSaveAs,因为我需要用户每次都能选择不同的文件类型。

问题是,当框出现以保存文件时,我可以键入一个名称然后点击保存,但它实际上并没有写入文件。

Public Sub ArchiveSheet()
Dim NewBook As Workbook
Dim CopyRange As Range
Set CopyRange = ActiveSheet.UsedRange
Dim lngCount As Long
CopyRange.Cells.Copy
Set NewBook = Workbooks.Add
Range("A1").PasteSpecial Paste:=xlPasteValues
    With NewBook
        .Title = "Archive"

    End With

     With Application.FileDialog(msoFileDialogSaveAs)
        .Show
     End With
Application.CutCopyMode = False

End Sub

1 个答案:

答案 0 :(得分:1)

您目前要求用户指出他/她想要保存文件的位置。但你没有使用它。您需要保存返回字符串,如下所示:

dim strFileSelected as String
strFileSelected = Application.GetSaveAsFilename(FileFilter:="Excel Files (*.xls), *.xls", Title:="Save Excel file...")

之后,您可以检查用户是否确实为您提供了路径和文件名以将其保存到:

If strFileSelected = "False" Then
    MsgBox "You have cancelled"
else
    MsgBox "Saving file here:" & chr(10) & strFileSelected 
    ThisWorkbook.SaveAs Filename:=strFileSelected, FileFormat:=xlWorkbookNormal
End If

请注意,您无法使用任何类型的文件扩展名保存所有Excel文件。示例:如果您打开了一个打开的XML格式的Excel文件并尝试使用.xls扩展名进行保存,那么您可能会收到一条错误消息,并且您将丢失附加到的任何类型的VBA代码该文件(如果您忽略错误消息)。

简而言之:您可能希望详细说明上述解决方案,以确保文件格式与使用Debug.Print ThisWorkbook.FileFormat的所选扩展名匹配。