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

Beh*_*ini 3 excel vba excel-2007 excel-vba

由于亚洲时报Siddharth溃败在这个帖子我学会了如何纸张保存到一个新的工作表。现在我的问题是如何添加文件创建的日期和时间,例如:

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
Run Code Online (Sandbox Code Playgroud)

你能让我知道怎么做吗?

小智 6

我有以下工作正常但想颠倒顺序。首先是文件名,其次是日期和时间。目前还没有想出办法。

Sub SaveToLocations()
' Saves active file to current plus two other backup locations, appends system date and time in front of file name in backup locations.

    Dim datim As String
    datim = Format(CStr(Now), "yyyy_mm_dd_hh_mm_ss_")

    ActiveWorkbook.SaveCopyAs "I:\FilesBackup\" & datim & ActiveWorkbook.Name
    ActiveWorkbook.SaveCopyAs "E:\CS Docs\FilesBackupCS\" & datim & ActiveWorkbook.Name
    ActiveWorkbook.Save
End Sub
Run Code Online (Sandbox Code Playgroud)


Sid*_*out 5

更改

FName = "C:\Users\somebody\Documents\TestSheet" & _
        Format(Range("E19"), "mmm-d-yyyy") & ".xlsm"
Run Code Online (Sandbox Code Playgroud)

FName = "C:\Users\somebody\Documents\TestSheet_" & _
        Format(Date, "ddmmmyyyy") & ".xlsm"
Run Code Online (Sandbox Code Playgroud)

如果要从中选择日期,请Range("E19")确保该单元格具有有效日期。在这种情况下,代码将变为

FName = "C:\Users\somebody\Documents\TestSheet_" & _
        Format(Range("E19"), "ddmmmyyyy") & ".xlsm"
Run Code Online (Sandbox Code Playgroud)


sim*_*MAn 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
Run Code Online (Sandbox Code Playgroud)

请注意,你可以改变Round()Int(),如果你想要的时间,而不是圆的圆刚下来。另外,请注意将在其上运行的PC上的语言设置,因为日期格式取决于它。

编辑:更简单的解决方案

Function SaveDateTime() as String

    SaveDateTime = "C:\Users\somebody\Documents\TestSheet_" & _
                    Format(Date, "ddmmmyyyy") & "_" & _
                    Format(Time, "hAM/PM") & ".xlsm"

End Function
Run Code Online (Sandbox Code Playgroud)