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

时间:2018-03-28 11:42:10

标签: excel excel-vba excel-2016 vba

所以我有这个VBA在工作,我刚才做了。它过去工作得很好,但截至今天它打开Save as窗口后不会保存我的文件。它只是给了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

1 个答案:

答案 0 :(得分:0)

GetSaveAsFilename无法保存文件 它只执行函数名称所说的内容:从对话框中获取SaveAs文件名。

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

使用所选文件名保存当前工作簿(该工作簿代码正在运行)的示例:

ThisWorkbook.SaveAs Filename:=fileSaveName 

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

ActiveWorkbook.SaveAs Filename:=fileSaveName

对于启用宏的文件,根据XlFileFormat-Enumeration定义文件格式:

ActiveWorkbook.SaveAs Filename:=fileSaveName, FileFormat:=xlOpenXMLWorkbookMacroEnabled