感谢Siddharth Rout在this Post,我学会了如何将工作表保存到新的工作表。现在我的问题是我如何添加文件创建的日期和时间,如:
TestSheet_25May2013_5pm.xls
Sub SaveSheet()
Dim FName As String
ActiveSheet.Copy
With ActiveSheet.UsedRange
.Copy
.PasteSpecial xlValues
.PasteSpecial xlFormats
End With
Application.CutCopyMode = False
FName = "C:\Users\somebody\Documents\TestSheet" & Format(Range("E19"), "mmm-d-yyyy") & ".xlsm"
ActiveWorkbook.SaveAs Filename:=FName, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub
你能告诉我怎么做吗?
答案 0 :(得分:5)
更改
FName = "C:\Users\somebody\Documents\TestSheet" & _
Format(Range("E19"), "mmm-d-yyyy") & ".xlsm"
到
FName = "C:\Users\somebody\Documents\TestSheet_" & _
Format(Date, "ddmmmyyyy") & ".xlsm"
如果您从Range("E19")
中选择日期,请确保该单元格具有有效日期。在这种情况下,代码将变为
FName = "C:\Users\somebody\Documents\TestSheet_" & _
Format(Range("E19"), "ddmmmyyyy") & ".xlsm"
答案 1 :(得分:5)
要完成Siddharth的解决方案,这里的代码还包括文件名中的时间:
Function SaveDateTime() as String
Dim SaveTime As Integer
SaveTime = Round(Timer / 3600, 0)
Dim AMPM As String: AMPM = "AM"
If SaveTime >= 12 Then
AMPM = "PM"
If SaveTime > 12 Then
SaveTime = SaveTime - 12
End If
End If
SaveDateTime = "C:\Users\somebody\Documents\TestSheet_" & _
Format(Date, "ddmmmyyyy") & "_" & _
SaveTime & AMPM & ".xlsm"
End Function
请注意,如果您希望时间向下舍入而不是仅舍入,则可以将Round()
更改为Int()
。此外,请注意您将在此处运行的PC上的语言设置,因为日期格式取决于它。
编辑:更简单的解决方案
Function SaveDateTime() as String
SaveDateTime = "C:\Users\somebody\Documents\TestSheet_" & _
Format(Date, "ddmmmyyyy") & "_" & _
Format(Time, "hAM/PM") & ".xlsm"
End Function
答案 2 :(得分:0)
我的以下各项工作正常,但想撤消该命令。文件名第一,日期和时间第二。到目前为止,还没有找到解决方法。
self