kako spremeniti datum datoteke

Pomoč pri izdelavi makrov
Odgovori
DusanS
Prispevkov: 31
Pridružen: To Jul 26, 2005 11:16 am

kako spremeniti datum datoteke

Odgovor Napisal/-a DusanS »

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":

Koda: Izberi vse

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.

LP Dušan
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: kako spremeniti datum datoteke

Odgovor Napisal/-a admin »

:) 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:

Koda: Izberi vse

    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:

Koda: Izberi vse

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
lp,
Matjaž Prtenjak
Administrator
DusanS
Prispevkov: 31
Pridružen: To Jul 26, 2005 11:16 am

Re: kako spremeniti datum datoteke

Odgovor Napisal/-a DusanS »

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...

LP Dušan
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: kako spremeniti datum datoteke

Odgovor Napisal/-a admin »

:oops: Moja napaka.... Manjka vam nekaj funkcij, ki jih je lepo pripravil Chip Pearson in se nahajajo tukaj!
lp,
Matjaž Prtenjak
Administrator
Odgovori