获取日期/时间工作簿已打开

时间:2017-03-23 23:02:53

标签: excel vba excel-vba

我有一些代码需要检查电子表格打开的日期。不是它创建的日期,也不一定是今天的日期 - 有些用户显然会将电子表格打开几天,而且此代码仅在打印工作簿时运行。

以前,我使用过这段代码:

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年。 有没有简单的方法来获取工作簿打开的日期和时间?

它存储在任何地方吗?

2 个答案:

答案 0 :(得分:1)

根据最终结果,你可以做一些简单的事情:

将= now()输入到单元格中,然后运行宏以复制并粘贴为值。

答案 1 :(得分:1)

也许尝试在Workbook_Open事件中使用now()来存储在其中一个工作表中打开工作簿的日期时间。这确实假设没有人会改变这个值。

Private Sub Workbook_Open()

    Worksheets("Sheet1").Range("A1").Value = Now()

End Sub