【问题标题】:How to Add Date and Time To File Name Using VBA in Excel如何在 Excel 中使用 VBA 将日期和时间添加到文件名
【发布时间】:2019-03-30 12:45:31
【问题描述】:

感谢this Post 的 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

你能告诉我怎么做吗?

【问题讨论】:

    标签: vba excel excel-2007


    【解决方案1】:

    改变

    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"
    

    【讨论】:

    • 很高兴能帮上忙 :)
    【解决方案2】:

    要完成 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
    

    【讨论】:

      【解决方案3】:

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

      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
      

      【讨论】:

        猜你喜欢
        • 2018-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-22
        • 2015-04-24
        • 2013-04-21
        • 1970-01-01
        相关资源
        最近更新 更多