我有一些代码需要检查电子表格打开的日期。不是它创建的日期,也不一定是今天的日期 - 有些用户显然会将电子表格打开几天,而且此代码仅在打印工作簿时运行。
以前,我使用过这段代码:
Dim FileSystem as Object
Set FileSystem = CreateObject("Scripting.FileSystemObject")
Debug.Print FileSystem.getFile(ThisWorkbook.Path & "\" & ThisWorkbook.Name).DateCreated
最初工作正常,但现在我遇到了另一个问题。对于某些用户来说,它工作正常 - 他们通过受版本控制的服务器打开此电子表格,该服务器将副本下载到受保护的目录。在这种情况下,.DateCreated
表示从服务器提取副本的日期。但是其他用户通过Internet Explorer打开指向服务器上文件的链接来打开工作簿,该浏览器会跳过受保护的目录。对于那些用户而言,代码根本不起作用 - 通过链接打开电子表格并检查它的文件路径,我得到以下内容:
debug.print ThisWorkbook.Path
Output: http://servername.com/serverfolder/
不出所料,FileSystem.getFile
在将其指向Web服务器而不是文件路径时崩溃。我尝试使用ThisWorkbook.BuiltinDocumentProperties("Creation Date")
,但问题在于它给了我最初创建工作簿的日期 - 在这种情况下,一直到2005年。
有没有简单的方法来获取工作簿打开的日期和时间?
它存储在任何地方吗?
答案 0 :(得分:1)
根据最终结果,你可以做一些简单的事情:
将= now()输入到单元格中,然后运行宏以复制并粘贴为值。
答案 1 :(得分:1)
也许尝试在Workbook_Open事件中使用now()来存储在其中一个工作表中打开工作簿的日期时间。这确实假设没有人会改变这个值。
Private Sub Workbook_Open()
Worksheets("Sheet1").Range("A1").Value = Now()
End Sub