我有一个电子表格,它是我的模板,每个人都可以访问。我希望他们点击的第一个按钮是我的宏“另存为”按钮,它保存在我的 SharePoint 上的正确位置。
这很好用!但是......它会在没有警告的情况下覆盖。
我想 1 - 确保它永远不会覆盖 - 我希望它取消该过程而不保存某些内容。
其次,我希望将其保存为“[预定名称]_copy01”,其中 01 可以转到 99,以防在原始人完成工作表后其他人再次点击该按钮(从而破坏了第一个人的一天) .
这是我当前的代码 - 我如何至少获得一个覆盖的弹出窗口,甚至更好地获得副本的重命名(我假设这是某种“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"
关于excel - 在VBA中保存Excel工作表时如何制作唯一的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58866441/