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

6mzjoqzu  于 2023-03-24  发布在  其他
关注(0)|答案(4)|浏览(817)

感谢Siddharth Rout在这篇文章中,我学会了如何将工作表保存到新的工作表中。现在我的问题是如何添加文件创建的日期和时间,如:
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

能告诉我怎么做吗?

jyztefdp

jyztefdp1#

变更

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"
q43xntqr

q43xntqr2#

为了完成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
xqk2d5yq

xqk2d5yq3#

我有下面的工作很好,但想扭转顺序。文件名第一,日期和时间第二。到目前为止还没有想出一个办法。

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
ws51t4hk

ws51t4hk4#

只是一个评论的人谁已经尝试和尝试,并试图让上述解决方案的工作,然后遇到了一个小细节,使不同。
根据您正在使用的其他代码,您可能需要使用“VBAFORMAT”来设置日期格式,因为您可能在编码中的另一个上下文中使用FORMAT。
在无法解决问题太久之后,才以正确的方式在谷歌上搜索问题后发现了这一点,希望你永远不会最终处理同样的事情:)

相关问题