excel - 在VBA中保存Excel工作表时如何制作唯一的文件名

标签 excel vba save overwrite save-as

我有一个电子表格,它是我的模板,每个人都可以访问。我希望他们点击的第一个按钮是我的宏“另存为”按钮,它保存在我的 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/

相关文章:

excel - 使用字符串变量作为文本连接

VBA 处理多种自定义数据类型的可能性

python - 写入 xlsx 在一个单元格中创建重复行

excel - VBA - 加速 Access 发送的 Excel 指令

excel - 无法使用 VBA 在 Excel 中插入图片

file-upload - 如何在不使用特定表单的情况下在 Symfony 1.2 中上传文件

ios - NSUserDefaults 保存。编码问题

matlab - 保存 Matlab 图而不绘制它?

excel - 保存前根据当前日期删除行

vba excel FileSystemObject readline函数不读取完整行