在 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
所以我有这个 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