Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 23. 5. 2019 19:50:43

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 568

zjistit makrem datum vytvoření cizího souboru VYŘEŠENO

Ahoj. Ještě ze soudku práce se soubory. Myslíte že lze nějak (makrem) zjistit datum vytvoření nějakého souboru v počítatči? Jde o to že mám dávku na odeslání nějakého strukturovaného mailu, kam se zároveň přidávají přílohy (již hotové soubory z místa v počítači). Potřeboval bych ale ověřit datum jejich vzniku, neboť musí být aktuální. (Lze to samozřejmě i obejít různými berličkami, ale na to se neptám, potřebuji to datum)

Editoval ludviktrnka (28. 5. 2019 18:12:22)


LibreOffice 6.2.

Offline

#2 23. 5. 2019 23:14:52

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 810

Re: zjistit makrem datum vytvoření cizího souboru VYŘEŠENO

Moc to nedělám. Zkuste funkci FileDateTime.

Offline

#3 24. 5. 2019 07:28:48

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,988

Re: zjistit makrem datum vytvoření cizího souboru VYŘEŠENO

Zrovna tahle funkce byla hlášena jako bug pro Libre, ale němci to obešli. Posílám kódy pro aktuální sešit. To byste měl upravit hidden otevřený dokument - nejlépe pomocí FilePicker a ten navést místo uváděného ThisComponent.

Sub UkazkaVsechProperties
ThisDoc = ThisComponent
sVar = sVar & "Autor 			" & ThisDoc.getDocumentProperties().Author & ", " & Chr(13)
'sVar = sVar & ThisComponent.getDocumentProperties.CreationDate & ", " & Chr(13)
'CreationDate byl nahlášen jabo bug a kolegové to obchází přidáním parametrů DateSerial
'pomocí funkce Vytvořeno - původně http://de.openoffice.info/viewtopic.php?t=62915, název erstDat
sVar = sVar & "Vytvořeno 	" & Vytvoreno() & ", " & Chr(13)
sVar = sVar & "Změněno 			" & ThisDoc.getDocumentProperties().ModifiedBy & ", " & Chr(13)
IF ThisDoc.getDocumentProperties().Description = "" Then
sVar = sVar & "Popis žádný 	"
Else
sVar = sVar & "Popis 			" & ThisDoc.getDocumentProperties().Description & ", " & Chr(13)
End If
MsgBox sVar
End Sub

Function Vytvoreno()
   With ThisComponent.getDocumentProperties.CreationDate
      Vytvoreno = DateSerial(.year, .month, .day)
   End With
End Function 

     Je to ukázka jak snadno se volají ostatní vlastnosti. K vlastnímu užití jen pro datum bych doporučil následující úpravu do nadřazených maker MOJE MAKRA STANDARD :

Public Sub PuvodniDatum 'Volání funkce "Vytvořeno" - sem zabudovat volání FilePickeru, nebo klasicky URL
print Vytvoreno
End Sub

Public Function Vytvoreno()
   With ThisComponent.getDocumentProperties.CreationDate
      Vytvoreno = DateSerial(.year, .month, .day)
   End With
   'print Vytvoreno 'Lze volat přímo funkci
End Function 

     Otevřený volaný soubor by mohl být načten jako Hidden. Jde tam spíš o Vaši potřebu. Jenom nevím jestli by to vzalo PDF, ale koukal jsem na zdroje a i když tam uvedená chyba způsobovala nefunkčnost, tak volali i PDF. Zase jde o to, že vlastnosti jsou uváděny také jako metadata (podobně jako v HTML) a dají se zjistit z foldru. Tato informace by mohla být totožná s tou kterou generuje LO, ale tak daleko jsem nešel. Myslím že si poradíte.
     Někdy se stane, že i v dialogu LO se datum vytvoření nuluje. Potom je potřeba stisknout tlačítko OBNOVIT VLASTNOSTI. Nevím jestli je to potřeba při volání makrem. Také by se to mělo dohledat nějakým RefreshProperties nebo něco podobného.

Přeji úspěch


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#4 28. 5. 2019 18:09:30

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 568

Re: zjistit makrem datum vytvoření cizího souboru VYŘEŠENO

Děkuji oběma nicméně v jednoduchosti je krása a tohle už snad ani jednoduší být nemůže:

Sub ExampleFileDateTime
    MsgBox FileDateTime("C:\autoexec.bat")
End Sub

https://help.libreoffice.org/Basic/File … Runtime/cs

Díky.


LibreOffice 6.2.

Offline

#5 28. 5. 2019 19:58:19

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 568

Re: zjistit makrem datum vytvoření cizího souboru VYŘEŠENO

Funkce FileDateTime funguje dobře. Nezdá se že by tam byla nějaká chyba. Vrácí to string, hodnotu zjistím přes CDate a přes datumové a časové oparace dojdu k aktuálnímu stáří což je moje cílová hodnota. Šlape to bez problémů.

dim rozdil as double, cas as double
dim dny as integer

rozdil = now() - Cdate(FileDateTime(Faktura))
dny = int(rozdil)
cas = rozdil - dny

if rozdil > 0.007 Then 'asi 10 minut
  otazka = MsgBox("Příloha je stará: " & dny & " dní, " & hour(cas) & " hodin a "_
               & Minute(cas) & " minut. Chceš generovat nové příohy?",35,"NEAKTUÁLNÍ PŘÍLOHA?")
  if otazka = 6 then
    exportuj_jednu 'úloha pro export aktuálně zobrazené faktury
  elseif otazka = 2 then
    exit sub 'stisk Cancel, při stisku NE se pokračuje se stávajícími přílohami
  end if
end if

Editoval ludviktrnka (28. 5. 2019 21:37:02)


LibreOffice 6.2.

Offline

Zápatí