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