2017-09-27 22 views
1

我正在尝试制作一个宏,可以在另一个工作簿上次更新时引用而不打开它。查找封闭工作簿的上次保存时间

我发现这一个,但它只能在活动工作簿:

Function LastModified() as Date 

    LastModified = ActiveWorkbook.BuiltinDocumentProperties("Last Save Time") 

End Function 

我想是这样的:

Function LastModified() as Date 

    LastModified = path."c:/test.xlsx".BuiltinDocumentProperties("Last Save Time") 

End Function 

但是,这并不能当然的工作。我该如何解决?

+1

https://stackoverflow.com/questions/16627441/excel-vba-using-filesystemobject-to-list-file-last-date-modified – braX

+1

'FileDateTime'不够吗? – Rory

+0

VBA不支持从封闭文档中读取数据。如果要从已关闭的文档访问内置属性,则需要安装MS提供的DLL文件,称为DSO OLE文档属性Reader 2.1。请参阅[文档属性](http://www.cpearson.com/excel/docprop.aspx)上的Chip Pearsons页面。或者你可以使用'FileSystemObject'来访问'LastModified'时间。我是否知道这是否会提供与内置属性相同的信息。但也许结果是足够的(并且实现起来更简单)。 –

回答

0

像这样的东西应该做的伎俩。在这个例子中你需要使用FileSystemObject。我在示例中使用了晚期绑定,但如果切换到早期绑定,您可能会获得一些性能提升。

Option Explicit 

Private Function LastModified(ByRef filePath As String) As Date 
    'Set a default value 
    LastModified = vbNull 

    If Len(Trim$(filePath)) = 0 Then Exit Function 

    With CreateObject("Scripting.FileSystemObject") 
     If .FileExists(filePath) Then LastModified = .GetFile(filePath).DateLastModified 
    End With 

End Function 

Sub SOExample() 
    'Specify a path to a file you want to get LastModified Date 
    Dim filePath As String: filePath = "MyPathToAFile" 

    'Return a date or vbNull 
    Dim myDate As Date: myDate = LastModified(filePath) 

    'Output the Date if it isn't vbNull 
    If Not myDate = vbNull Then Debug.Print myDate 
End Sub 
0

Filesystemobject的工作,但我需要然后打印到单元格,因为它不会调用该函数。

的FileDateTime为我工作虽然:)

Function LastModified() as Date 

    LastModified = FileDateTime("filepath") 

End Function 
相关问题