Страницы: 1
RSS
проверка даты создания файла
 
В общих чертах есть следующий код, который проверяет дату создания/изменения файлов.  
Private Sub Workbook_Open()  
Dim adres As Variant  
Dim ifile As Variant  
Dim idate As Variant  
Dim ifile2 As Variant  
Dim idate2 As Variant  
adres = Me.Path  
ifile = adres & "\KPI.xls"  
ifile2 = adres & "\Выполнение плана.xls"  
idate = Format(FileDateTime(ifile), "dd-mm-yy")  
idate2 = Format(FileDateTime(ifile), "dd-mm-yy")  
If idate = idate2 Then MsgBox "ОК" else: _  
If idate < idate2 Then MsgBox "файл KPI старый" Else MsgBox "файл Выполнение Плана старый"  
End Sub  
 
Мне не совсем подходит оператор FileDateTime, так как он выдает информацию последнего изменения файла, а надо именно создания, так, например, дата создания может быть одна, а дата изменения другая - более поздняя. Что можете посоветовать?
 
Попробуйте:  
MsgBox ActiveWorkbook.BuiltinDocumentProperties("Creation Date")
 
интересный вариант, однако работает только с текущим файлом, а вот в таком формате не хочет:  
MsgBox ifile.BuiltinDocumentProperties("Creation Date"), где iFile соответственно переменная содержащая путь и название файла.  
Причем даже и ошибки то никакой не выдыет, но вместо даты пустота. Я где-то ошибся?
 
Я использую такую функцию:  
 
Sub GetFileProperty(SourceNameBook As String, SourcePathFile As String, StartRow As Long, StartColumn As Long, TargetNameSheet As String)  
With CreateObject("Shell.Application")  
Dim oFolder As Object, oFile As Object  
Set oFolder = .Namespace((SourcePathFile))  
Dim sTheme As String, sAvtor As String  
If Not oFolder Is Nothing Then  
Set oFile = oFolder.ParseName((SourceNameBook))  
If Not oFile Is Nothing Then  
With ThisWorkbook.Sheets(TargetNameSheet)  
Dim j As Integer  
For j = 1 To 5 '14  
 .Cells(StartRow + j - 1, StartColumn) = oFolder.GetDetailsOf(oFile, j)  
Next j  
End With  
End If  
Else  
  MsgBox "Файл " & SourceNameBook & " не доступен.", vbInformation, "Сообщение"  
End If  
End With  
End Sub  
 
Функция укладывает на лист с именем TargetNameSheet на позицию StartRow,  StartColumn и ниже следующие данные:  
Объем файла  
Тип  
Дата последнего изменения  
Дата создания  
Дата открытия
 
Вариант:  
Public Sub qqq()  
Set FSO = CreateObject("Scripting.FileSystemObject")  
Set File = FSO.GetFile("H:\Temp\bad.xls") 'тут путь и имя файла  
mStr = mStr & "Дата создания - " & File.DateCreated & vbCrLf  
mStr = mStr & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf  
mStr = mStr & "Дата последней модификации - " & File.DateLastModified & vbCrLf  
MsgBox mStr  
End Sub
Я сам - дурнее всякого примера! ...
 
Спасибо. Решено.
 
KukLP, как вывести подобные данные  не в msgbox а в ячейку?
 
cells(1,1).value = mStr
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
Спасибо, так же самому удалось решить след образом.  
 
Sub ДатаВремяСоздания()  
Set FSO = CreateObject("Scripting.FileSystemObject")  
Set File = FSO.GetFile("c:\outbound delivery\delivery.txt")  
ActiveWorkbook.ActiveSheet.Range("A1").Value = File.DateCreated & vbCrLf  
End Sub
 
ActiveWorkbook.ActiveSheet - можно удалить. Они итак будут по-умолчанию в объекта Range
 
эт я для примера, а вообще заменю на конкретную книгу/лист
Страницы: 1
Наверх