使用 ActiveWorksheet 而不是文件路径 VBA 访问 excel 文档的文件属性
Access file properties of excel document by using ActiveWorksheet and not filepath VBA
我需要使用 VBA 访问 excel sheet 的创建时间。我不能使用“正常”方式使用:ActiveWorkbook.BuiltinDocumentProperties("Creation Date")
因为这个 returns “内容创建”而不是“创建日期”。内容创建 returns 创建模板的时间,我需要当前文件的创建时间。
此方法有效:
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
因为你没有设置文件对象。您需要 Set
关键字将文件设置为对象,然后您可以 return 对象 属性。另一件事是,声明一个变量类型总是好的做法。因此,请尝试以下完整代码:
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
我不是 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
这样您就可以将函数放入一个循环中,只要您可以在一个循环中获取完整的工作表名称,我想您可以获得一整套文档创建日期。
我需要使用 VBA 访问 excel sheet 的创建时间。我不能使用“正常”方式使用:ActiveWorkbook.BuiltinDocumentProperties("Creation Date")
因为这个 returns “内容创建”而不是“创建日期”。内容创建 returns 创建模板的时间,我需要当前文件的创建时间。
此方法有效:
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
因为你没有设置文件对象。您需要 Set
关键字将文件设置为对象,然后您可以 return 对象 属性。另一件事是,声明一个变量类型总是好的做法。因此,请尝试以下完整代码:
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
我不是 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
这样您就可以将函数放入一个循环中,只要您可以在一个循环中获取完整的工作表名称,我想您可以获得一整套文档创建日期。