0

我需要使用 VBA 访问 Excel 工作表的创建时间。我不能使用“正常”方式使用:ActiveWorkbook.BuiltinDocumentProperties("Creation Date")因为这返回“内容创建”而不是“创建日期”。创建的内容返回创建模板的时间,我需要创建当前文件的时间。

此方法有效:

Sub ShowFileInfo(filespec)
Dim fs, f, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(filespec)
s = "Created: " & f.DateCreated
MsgBox s
End Sub

但是我需要它来使用 ActiveWorkbook 的文件规范,而不必指定确切的文档,因为我将处理大量具有相同源模板的不同文件。我的尝试如下所示,但我觉得我现在已经尝试了所有选项,但我似乎无法正确获取 ActiveWorkbook 的文件规格

Dim file, fs
Set fs = CreateObject("Scripting.FileSystemObject")
file = fs.GetFile(ActiveWorkbook.FullName)
MsgBox file.DateCreated
4

2 回答 2

0

因为您没有设置文件对象。您需要Set关键字将文件设置为对象,然后您可以返回对象属性。另一件事是,声明变量类型始终是一种好习惯。所以,试试下面的完整代码:

Sub fCreated()
Dim strFile As Object, fs As Object
    
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set strFile = fs.GetFile(ActiveWorkbook.FullName)
    MsgBox strFile.DateCreated

'Clear memory
Set fs = Nothing
Set file = Nothing
End Sub
于 2021-06-28T09:26:51.317 回答
0

我不能 100% 确定您的目标是什么,但我确实看到两种获取日期和时间的方式有所不同。

您是否尝试过使其成为功能?只是以这种方式返回一个字符串或值?

例如:

Sub Spec() 'Your main code
Dim Time_Date As String

Time_Date = ShowFileInfo(ActiveWorkbook.FullName)

MsgBox Time_Date

End Sub

Function ShowFileInfo(filespec) As String 'Function to get your Time_Date
Dim fs, f, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(filespec)

ShowFileInfo = f.DateCreated

End Function

这样,您可以将函数放入循环中,并且只要您可以在循环中获取完整的工作表名称,我想您可以获得整个文档创建日期数组。

于 2021-06-28T09:38:04.010 回答