首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VBA -保存工作簿并将今天的日期添加到当前工作簿名称

VBA -保存工作簿并将今天的日期添加到当前工作簿名称
EN

Stack Overflow用户
提问于 2018-08-10 23:19:16
回答 2查看 10.1K关注 0票数 0

下面的代码显示了我的save宏。现在,它将当前工作簿保存在具有当前工作簿名称的特定文件路径中。如何在当前工作簿名称中添加今天的日期?因此,它保存到指定的文件路径与当前工作簿名称和今天的日期在末尾?

代码语言:javascript
运行
复制
Sub Save_Workbook()
    ActiveWorkbook.SaveAs "H:\HR\Cole G\Timehseet Test Path\" & ActiveWorkbook.Name
End Sub
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-10 23:56:24

首先,.Name可能包含也可能不包含文件扩展名,这取决于文件是否已保存。(例如,"Test.xls“或"Book2")

代码语言:javascript
运行
复制
Const Path = "H:\HR\Cole G\Timehseet Test Path\"
Dim Pos as Long

Pos = InStrRev(ActiveWorkbook.Name, ".") - 1
' If there wasn't a ".", then the file doesn't have an extension and Pos = -1
If Pos < 0 then Pos = Len(ActiveWorkbook.Name)
' Now put everything together, including the file extension...
ActiveWorkbook.SaveAs Path & Left(ActiveWorkbook.Name,Pos) & Format(Now, "yyyy-mm-dd") & Mid(ActiveWorkbook.Name,Pos+1)
票数 2
EN

Stack Overflow用户

发布于 2018-08-10 23:53:06

无论文件扩展名是什么(即使没有文件扩展名!),只要您使用的是常见的Excel文件类型,这都应该是可靠的。如果你打开的是奇怪的.HTML文件,它可能需要一些调整。

代码语言:javascript
运行
复制
Sub Save_Workbook()
    Dim fileNameWithoutExtension as String
    fileNameWithoutExtension = getFileNameWithoutExtension(ActiveWorkbook)
    ActiveWorkbook.SaveAs "H:\HR\Cole G\Timehseet Test Path\" & fileNameWithoutExtension & Format(Date, "YYYY-MM-DD"), FileFormat:=ActiveWorkbook.FileFormat
End Sub

Function getFileNameWithoutExtension(wb As Workbook)
Dim baseName As String

If (wb.Name = wb.FullName) Then
    ' This handles files that have not been saved, which won't have an extension
    baseName = wb.Name
    GoTo EarlyExit
End If

Select Case wb.FileFormat
    Case xlOpenXMLAddIn, xlOpenXMLStrictWorkbook, xlOpenXMLTemplate, xlOpenXMLTemplateMacroEnabled, _
        xlOpenXMLWorkbook, xlWorkbookDefault
        ' These all have a 4-character extension
        baseName = Left(wb.Name, Len(wb.Name) - 5)
    Case Else
        ' almost every other file type is a 3-character extension,
        ' but modify if needed based on this enumeration:
        ' https://msdn.microsoft.com/en-us/vba/excel-vba/articles/xlfileformat-enumeration-excel
        baseName = Left(wb.Name, Len(wb.Name) - 4)
End Select

EarlyExit:
getFileNameWithoutExtension = baseName

End Function
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51789604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档