在 VBA 中保存 Excel 工作表时如何制作唯一的文件名
How to make unique filename when saving Excel worksheet in VBA
我有一个传播sheet,这是我的模板,每个人都可以访问。我希望他们点击的第一个按钮是我的宏 "Save As" 按钮,它保存在我的 SharePoint 上的正确位置。
效果很好!但是......它会在没有警告的情况下覆盖。
我想 1 - 确保它永远不会覆盖 - 我希望它取消进程而不保存一些东西。
其次,我希望将其保存为“[predetermined name]_copy01”,其中 01 可以转到 99,以防按钮在原 sheet 完成后被其他人再次点击人(因此毁了第一人称的一天)。
这是我当前的代码 - 我如何至少获得一个用于覆盖的弹出窗口,甚至更好,获得副本的重命名(我假设这是某种 "if" 或 "if/else"语句)
Sub Save_Workook_NewName()
Dim tillDay As Date
If Time < 11 / 24 Then
tillDay = Date - 1 + 11 / 24
Else
tillDay = Now
End If
Application.AlertBeforeOverwriting = True
Dim path As String
path = "https://ourcorporatesite.sharepoint.com/sites/tills/Shared%20Documents/Nightly%20Tills/"
ThisWorkbook.SaveAs FileName:=path & Format(Now(), "yy-mm-dd") & "_Tills.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled, ReadOnlyRecommended:=False
End Sub
为了创建唯一的文件名,我使用了 Excel 用户的用户名和当前时间戳。因此,它确保每个用户始终生成不同的文件名。只需确保代码运行超过 1 秒(或在名称生成器中添加 1 秒等待):
Public Function GenerateName() As String
GenerateName = Format(Now(), "yyyy_mm_dd_hh_MM_ss") & "_" & Environ("Username")
End Function
在这种情况下,如果要保存文件,则如下所示:2019_11_14_22_08_50_vityata
。作为奖励,它可以很容易地按创建日期排序。
可以这样称呼:
ThisWorkbook.SaveAs Filename:=Path & GenerateName & ".xlsm"
我有一个传播sheet,这是我的模板,每个人都可以访问。我希望他们点击的第一个按钮是我的宏 "Save As" 按钮,它保存在我的 SharePoint 上的正确位置。
效果很好!但是......它会在没有警告的情况下覆盖。
我想 1 - 确保它永远不会覆盖 - 我希望它取消进程而不保存一些东西。
其次,我希望将其保存为“[predetermined name]_copy01”,其中 01 可以转到 99,以防按钮在原 sheet 完成后被其他人再次点击人(因此毁了第一人称的一天)。
这是我当前的代码 - 我如何至少获得一个用于覆盖的弹出窗口,甚至更好,获得副本的重命名(我假设这是某种 "if" 或 "if/else"语句)
Sub Save_Workook_NewName()
Dim tillDay As Date
If Time < 11 / 24 Then
tillDay = Date - 1 + 11 / 24
Else
tillDay = Now
End If
Application.AlertBeforeOverwriting = True
Dim path As String
path = "https://ourcorporatesite.sharepoint.com/sites/tills/Shared%20Documents/Nightly%20Tills/"
ThisWorkbook.SaveAs FileName:=path & Format(Now(), "yy-mm-dd") & "_Tills.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled, ReadOnlyRecommended:=False
End Sub
为了创建唯一的文件名,我使用了 Excel 用户的用户名和当前时间戳。因此,它确保每个用户始终生成不同的文件名。只需确保代码运行超过 1 秒(或在名称生成器中添加 1 秒等待):
Public Function GenerateName() As String
GenerateName = Format(Now(), "yyyy_mm_dd_hh_MM_ss") & "_" & Environ("Username")
End Function
在这种情况下,如果要保存文件,则如下所示:2019_11_14_22_08_50_vityata
。作为奖励,它可以很容易地按创建日期排序。
可以这样称呼:
ThisWorkbook.SaveAs Filename:=Path & GenerateName & ".xlsm"