VBA 自动保存为带有用户名和时间戳的宏

Posted

技术标签:

【中文标题】VBA 自动保存为带有用户名和时间戳的宏【英文标题】:VBA auto save as macro with username and time stamp 【发布时间】:2016-07-04 19:36:21 【问题描述】:

当有人关闭它时,我正在尝试获取我的 excel 文件。会有一个保存,这样我就可以记录用户名、日期和时间,我想我已经完成了大部分工作,但我只是找不到这个难题的最后一块我有以下代码,但失败了一些怎么不知道为什么。

Private Sub ActiveWorkbook_Close()
Application.DisplayAlerts = False

Year_Run = Year(Date)
If Len(Month(Date)) = 1 Then Month_Run = "0" & Month(Date) Else Month_Run = Month(Date)
If Len(Day(Date)) = 1 Then Day_Run = "0" & Day(Date) Else Day_Run = Day(Date)
Date_Run = " on " & Year_Run & "-" & Month_Run & "-" & Day_Run

If Len(Hour(Time)) = 1 Then Hour_Run = "0" & Hour(Time) Else Hour_Run = Hour(Time)
If Len(Minute(Time)) = 1 Then Min_Run = "0" & Minute(Time) Else Min_Run = Minute(Time)
If Len(Second(Time)) = 1 Then Sec_Run = "0" & Second(Time) Else Sec_Run = Second(Time)
Time_Run = " at " & Hour_Run & "," & Min_Run & "," & Sec_Run

ActiveWorkbook.SaveAs ("\\Path to my folder on our network - " & (Environ$("Username")) & Date_Run & Time_Run & ".xlsm ")
End Sub

`

【问题讨论】:

它是如何失败的?错误,是否发生了超出预期的事情,崩溃了?试试Format(Date,"yyyy-mm-dd")Format(Time,"hh,mm,ss")。它可能不会解决问题,但要短得多。 腐朽的炼金术,你的代码对我来说运行得很好。我可以想到它可能对您不起作用的许多原因,但@arcadeprecinct 提出的观点很好。如果不确切知道运行代码时最终会发生什么(即使发生的事情什么都没有),很难提供指导。如果您描述您所看到的内容,我非常有信心我自己或拱廊区将能够在接下来的过程中为您提供帮助。 我只是不安全,所以我不知道为什么它不会保存。我逐字修改了我的代码,所以我对 excel 进行了各种研究,并找到了让它发挥作用的方法。所以它也可以保存在您想要的任何地方? 你能告诉我,当你关闭你的工作簿时你的代码会被执行吗?例如,如果您将 msgbox "Test" 放在 sub 的开头,当您关闭工作簿时,您会看到消息框吗? 【参考方案1】:

腐朽的炼金术,做两件事: 首先,我假设您的代码在 Module1 下,或者下面的项目 A 以外的某个地方。如果是这种情况,首先将子例程的范围从私有更改为公共,即Public Sub ActiveWorkbook_Close() 然后,打开 ThisWorkbook 的代码(下面的项目 A)。确保 B 项和 C 项设置正确。现在调用您的子程序,如下图所示。

如果您遇到的问题是我认为的那样,那么这应该可以解决问题。如果不是,请告诉我。

【讨论】:

项目A、B等是什么意思?我真的只在模块中使用过 VBA 代码,但我会尝试按照你所说的,看看我是否得到任何形式的结果。 好的,完成了这项工作,但我可以问一下为什么这比我使用相同代码的 Word 工作量要多得多,而且它的工作方式很简单。所以我的主要问题是为什么我必须在关闭前进行? Decayed Alchemy,在我们回答您的下一个问题之前,如果我的第一个答案为您解决了问题,您应该通过单击复选标记来考虑 accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。

以上是关于VBA 自动保存为带有用户名和时间戳的宏的主要内容,如果未能解决你的问题,请参考以下文章

VBA 打印为 PDF 并使用自动文件名保存

VBA访问需要在保存新记录之前获取自动编号

使用 VBA 将包含 Excel 文件 (.xlsm) 的宏保存为不包含宏的文件 (.xlsx) 时抑制对话框

如何在进行邮件合并(VBA)时自动保存为PDF

VBA:循环遍历行和自动填充的宏

Access 2010 VBA - 打开新记录集 - 打开之前意外保存的值