几周前,我发布了一篇关于使用 VBA 提示我在使用宏保存 excel 文件时添加文件名的文章。非常感谢大家的帮助。我成功了!
现在我又有另一个类似的问题。
我如何在 VBA 中获取月份、日期、年份 --以及 -- 小时、分钟、秒,然后将其添加到文件名中?为什么?因此,当我单击宏将其保存为 excel 文件和 PDF 时,文件名是“带时间戳的”,并消除了“哦不!我用另一个文件覆盖了该文件!!”的任何问题。
我尝试了一些方法(再说一次,我绝不是 VBA 程序员 [我是一名 RN !!})但就是无法获得所有信息。
Dim mydate 作为文本 Mydate = date(now) Dim month 作为文本 mymonth = month(now) ..小时、分钟、秒和年份也类似
然后将所有这些连接在一起作为.....文本??....字符串,然后将其添加到文件名中
在使用思维过程...
我正在更改文件...更改数据,更改字体.....
日期时间是:2023 年 4 月 21 日上午 9:02;12
<click the macro>
“代码” (哈哈哈!!)MMDDYY
以(042123) 和HHMMSS
(090212) 格式获取小时、分钟等将其分配给一个变量...将其命名为 FILESTAMP
此时 FILESTAMP 为 042123_090212
将其连接到文件名:FILENAME_042123_090212
文件保存为“FILENAME_041223_090212.xls”
继续处理文件...进行修改....等等
五分钟过去了……
单击宏来保存等等。
保存文件现在名为 FILENAME_042123_090712 <== “07”,因为已经过去了 5 分钟(2+5=7)
我将其用于财务工作表,我认为这是确保保存文件的好方法
任何帮助表示感谢
谢谢
答案1
请尝试以下操作:
Sub MakeBackupFile()
Rem Save backup copy (if possible)
Dim strPath
Dim strFilename
On Error GoTo ErrorHandler
strPath = Application.ActiveWorkbook.Path
If strPath Like "http*" Then Exit Sub ' Saving copy is not working in SharePoint
strPath = strPath & "\Backups\"
If Dir(strPath, vbDirectory) = "" Then MkDir strPath
If Dir(strPath, vbDirectory) = "" Then Exit Sub ' Cannot create subfolder Backups
strFilename = Replace(ThisWorkbook.Name, ".", "_" & Format(Date, "YYYYMMDD") & "_" & Format(Time, "hhmmss") & ".")
ThisWorkbook.SaveCopyAs strPath & strFilename
Exit Sub
ErrorHandler:
' MsgBox "Make sure there is a subfolder named 'Backups' in the folder that holds this file."
End Sub
请注意,宏不会保存当前文件,而是在备份子目录中创建带有时间戳的副本。时间戳不是您要求的 - 日期写在年月日顺序。这样,您只需按名称对文件进行排序,即可按正确的顺序获取文件(在MMDDYY,按名称排序会导致文件顺序错误)