Resumen Modificar Fecha y Hora de Archivos

He revisado el código que envié (lo había sacado de un mensaje anterior a la lista) y creo que esto te funcionará correctamente :


Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type

Type SYSTEMTIME
    wYear As Integer
    wMonth As Integer
    wDayOfWeek As Integer
    wDay As Integer
    wHour As Integer
    wMinute As Integer
    wSecond As Integer
    wMilliseconds As Integer
End Type
Public Const FILE_SHARE_READ = &H1
Public Const FILE_SHARE_WRITE = &H2
Public Const GENERIC_WRITE = &H40000000
Public Const OPEN_EXISTING = 3

Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal
lpFileName As String, _
                ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, _
                lpSecurityAttributes As Long, _
                ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, _
                ByVal hTemplateFile As Long) As Long
Declare Function LocalFileTimeToFileTime Lib "kernel32" (lpLocalFileTime As
FILETIME, lpFileTime As FILETIME) As Long
Declare Function SetFileTime Lib "kernel32" (ByVal hFile As Long,
lpCreationTime As Any, lpLastAccessTime As Any, lpLastWriteTime As Any) As Long
Declare Function SystemTimeToFileTime Lib "kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long

Sub SetFileDate(sFileName As String, sDate As String, Optional ByVal sQueFecha As String)
'modifica la fecha de un fichero
'Si el parámetro sQueFecha contiene una C modifica la fecha de creación
'Si el parámetro sQueFecha contiene una A modifica la fecha de último acceso
'Si el parámetro sQueFecha contiene una M modifica la fecha de última modificación
'Si no existe el parámetro sQueFecha se modifican todas
Dim hFile As Long
Dim lResult As Long
Dim udtSysTime As SYSTEMTIME
Dim udtFileTime As FILETIME
Dim udtLocalTime As FILETIME

With udtSysTime
    .wYear = Year(sDate)
    .wMonth = Month(sDate)
    .wDay = Day(sDate)
    .wDayOfWeek = WeekDay(sDate) - 1
    .wHour = Hour(sDate)
    .wMinute = Minute(sDate)
    .wSecond = Second(sDate)
End With

lResult = SystemTimeToFileTime(udtSysTime, udtLocalTime)
lResult = LocalFileTimeToFileTime(udtLocalTime, udtFileTime)
hFile = CreateFile(sFileName, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
If sQueFecha = "" Then sQueFecha = "CAM"
If InStr(1, sQueFecha, "C", vbTextCompare) <> 0 Then lResult = SetFileTime(hFile, udtFileTime, vbNullString, vbNullString)
If InStr(1, sQueFecha, "A", vbTextCompare) <> 0 Then lResult = SetFileTime(hFile, vbNullString, udtFileTime, vbNullString)
If InStr(1, sQueFecha, "M", vbTextCompare) <> 0 Then lResult = SetFileTime(hFile, vbNullString, vbNullString, udtFileTime)
Call CloseHandle(hFile)
End Sub


Un saludo.

_________________________________________________
José Rubí de la Vega
E-mail : jrubi@arrakis.es
WWW : http://www.arrakis.es/~jrubi
Podrás encontrar información sobre VB, la lista
VB-ESP y un resumen de los mensajes de la misma



Resumen Resumen

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com