在 VBA 中使用 filesavename 后无法在 Excel 中保存文件

Cannot save file in Excel after using filesavename in VBA

所以我有这个 VBA 在工作,我不久前制作的。它曾经完美地工作,但截至今天,它在打开另存为 window 后不会保存我的文件。它只是转到我给它的 MsgBox。

最初的问题是 LDate = Date 以某种方式开始返回带有正斜杠的日期。我通过为 LDate 添加格式来解决这个问题。但更大的问题仍然存在。无论我做什么,删除或添加什么代码,手动编写什么名称,文件都不会保存在我给它的任何文件夹中。

Sub Export()
'
' Export Macro
'
    ' copy range from work workbook, create a new workbook and paste selection
    Sheets("NewTemplate").Range("A1:M29").Copy
    Workbooks.Add
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    ActiveSheet.Paste

    ' rename active sheet and active workbook
    ActiveSheet.Name = "Create"
    ActiveWorkbook.Windows(1).Caption = "Newly Generated Table"
    Range("A1").Select
     Application.CutCopyMode = False

    ' open Save As window, set file save name to custom prefix + date
    Dim IntialName As String
    Dim fileSaveName As Variant
    InitialName = "Import_Feature_Values_"
    Dim LDate As String
    LDate = Date
    LDate = Format(Now, "dd_mm_yyyy")
    fileSaveName = Application.GetSaveAsFilename(FileFilter:= _
                                                 "Microsoft Excel Macro- Enabled Worksheet (*.xlsm), *.xlsm", InitialFileName:=InitialName & LDate)

    'error box if filesavename fails
    If fileSaveName <> False Then
    MsgBox "Failed to Save as " & fileSaveName
    End If
'
End Sub

GetSaveAsFilename 不保存文件。
它只执行函数名称所说的:从对话框中获取另存为文件名。

所以你的变量fileSaveName只是包含在对话框中选择的文件路径和文件名,你仍然需要自己保存文件。

例如,使用所选文件名保存当前工作簿(该工作簿代码为 运行):

ThisWorkbook.SaveAs Filename:=fileSaveName 

或对于活动工作簿(位于顶部的工作簿):

ActiveWorkbook.SaveAs Filename:=fileSaveName

对于启用宏的文件,根据 XlFileFormat-Enumeration:

定义文件格式
ActiveWorkbook.SaveAs Filename:=fileSaveName, FileFormat:=xlOpenXMLWorkbookMacroEnabled