如何在Excel中使用VBA将日期和时间添加到文件名

时间:2013-12-17 13:36:14

标签: vba excel-vba excel-2007 excel

感谢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
你能告诉我怎么做吗?

3 个答案:

答案 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