#excel #vba
#excel #vba
Вопрос:
Я создаю макрос Excel, в котором мне нужно указать время первого и последнего изменения файла на листе Excel, например, время первого изменения файла журнала и время последнего изменения.(Предположим, что в каталоге имеется несколько файлов журнала). Мне нужно измененное время для первого файла и последнего файла.
Я не могу сравнить дату, пожалуйста, предложите.
Sub test()
Dim fso As Object
Dim fol As Object
Dim fil As Object
Dim temp As Date
Set fso = CreateObject("Scripting.FileSystemObject")
Set fol = fso.GetFolder("Z:LogfilesMonitorLogon")
For Each fil In fol.Files
temp = fil.DateLastModified
Next fil
MsgBox temp
End Sub
Комментарии:
1. Вы не сохраняете никакой даты… таким образом, вы не можете сравнивать. Создайте массив типа Date, а затем, я думаю
Application.Max(Datearr)
, он должен предоставить вам самый новый иApplication.Min(Datearr)
должен предоставить вам самый старый.
Ответ №1:
Вам просто нужно сохранить самую старую и самую новую дату при циклическом просмотре каталога:
Option Explicit
Sub test()
Dim fso As Object
Dim fol As Object
Dim fil As Object
Dim temp As Date
Set fso = CreateObject("Scripting.FileSystemObject")
Set fol = fso.GetFolder("C:Temp")
Dim oldest As Date
Dim oldestFile As String
Dim newest As Date
Dim newestFile As String
For Each fil In fol.Files
temp = fil.DateLastModified
If (newest = #12:00:00 AM#) Or (temp > newest) Then
newest = temp
newestFile = fil.Path
End If
If (oldest = #12:00:00 AM#) Or (temp < oldest) Then
oldest = temp
oldestFile = fil.Path
End If
Next fil
MsgBox "Oldest File: " amp; oldestFile amp; " (" amp; oldest amp; ")" amp; vbCrLf amp; _
"Newest File: " amp; newestFile amp; " (" amp; newest amp; ")"
End Sub
Ответ №2:
Option Explicit
Sub LoopAllFilesInFolder()
Dim strFolder As String
Dim Library As Object, File As Object, Folder As Object
strFolder = "Z:LogfilesMonitorLogon"
Set Library = CreateObject("Scripting.FileSystemObject")
Set Folder = Library.GetFolder(strFolder)
Set File = Folder.Files
For Each File In File
MsgBox File.Name amp; " details:" amp; vbNewLine amp; vbNewLine amp; _
"Date Created: " amp; File.datecreated amp; vbNewLine amp; _
"Date Last Accessed: " amp; File.datelastaccessed amp; vbNewLine amp; _
"Date Last Modified: " amp; File.dateLastModified
Next
Set Library = Nothing
Set Folder = Nothing
Set File = Nothing
End Sub