Na potovanju smo slikali z dvema fotoaparatoma, ki pa nista imela enako nastavljene ure. To sem ugotovil, ko sem iz obeh naložil slike na računalnik in pognal predstavitev. Slike si niso sledile v pravem zaporedju. Ročno spreminjati datum je možno, ampak zaradi količine slik ne pride v poštev. Poskusil sem napisati makro s katerim bi slike iz enega fotoaparata "pomladil":
MyPath = "C:\temp1\"
sprememba = 103 'zmanjša čas za 1 uro in 43 minut
d = sprememba / 24 / 60
MyFile = Dir(MyPath, vbDirectory)
Do While MyFile <> ""
If MyFile <> "." And MyFile <> ".." Then
atr_datum = FileDateTime("C:\temp1\" & MyFile)
atr_datum1 = CDate(DateValue(atr_datum) + TimeValue(atr_datum) - d)
FileDateTime("C:\temp1\" & MyFile) = atr_datum1
End If
MyFile = Dir
Loop
End Sub
makro čisto v redu prebere datum in izračuna novega vendar pa javi napako v vrstici "FileDateTime("C:\temp1\" & MyFile) = atr_datum1". Očitno se tako ne da spremeniti atributov datoteke.
Prosim za nasvet ali se to da storiti in na kak način.
Ne; na tak način ne morete spreminjati časa datoteke. Za kaj takšnega je v VBA potrebno posečči po sistemski finkciji SetFileDateTime, ki jo morate na vrhu datoteke najprej deklarrati:
Public Function SetFileDateTime(FileName As String, _
FileDateTime As Double, WhichDateToChange As FileDateToProcess, _
Optional NoGMTConvert As Boolean = False) As Boolean
in potem jo lahko v kodi tudi uporabite na (npr.) sledeč način:
NovCas = DateSerial(2011, 8, 4)
NovCas = NovCas + TimeSerial(12, 34, 56)
ImeDatoteke = "C:\Test.txt"
Rezultat = SetFileDateTime(FileName:=ImeDatoteke, FileDateTime:=NovCas, _
WhichDateToChange:=WhatTime, NoGMTConvert:=False)
If Rezultat = True Then
Debug.Print "Uspešno sem spremenil datum"
Else
Debug.Print "Sprememba datuma ni uspela"
End If
Hvala za hiter odgovor, ampak bi rabil še malo pomoči pri deklariranju funkcije.
Če na vrh modula prilimam tekst iz vašega odgovora
"Public Function SetFileDateTime(FileName As String, _
FileDateTime As Double, WhichDateToChange As FileDateToProcess, _
Optional NoGMTConvert As Boolean = False) As Boolean"
VBA tega ne prepozna kot funkcijo...