Przedstawiam, zmodyfikowaną przy współpracy z kolegą @Rafkus, funkcję napisaną dla arkusza Calc, pozwalającą otrzymać niektóre informacje o dokumencie. Pierwszy argument funkcji, podany jako tekst, decyduje jaka informacja zostanie zwrócona. Drugi argument należy podać, jeśli wynik ma zostać sformatowany wg. wymogów użytkownika, w taki sam sposób, jak to opisano w pomocy do funkcji TEKST(). Funkcję można wkopiować do biblioteki "Standard" w kontenerze "Moje makra" i wywoływać ją w arkuszu kalkulacyjnym.
DOKINFO("TypInfo";"styl")
Argument TypInfo wpisywany bezpośrednio do funkcji musi być ujęty w cudzysłów, można go wpisać dowolnymi literami i jest jednym ze słów:
- Autoro - funkcja zwraca informację kto jest autorem dokumentu.
- Utworzony - funkcja zwraca datę i godzinę utworzenia dokumentu.
- Zmodyfikowany - funkcja zwraca datę i godzinę ostatniej modyfikacji.
- Autorm - funkcja zwraca informację kto jako ostatni modyfikował dokument.
- Czas - Funkcja zwraca informację o łącznym czasie pracy na dokumencie
- Ile - Funkcja zwraca informację ile razy dokument był zapisywany.
Przykłady:
=DOKINFO("autoro") zwróci informację o osobie, która utworzyła dokument
=DOKINFO(B2) bez drugiego argumentu, gdy B2 zawiera wpisany ciąg "czas", zwróci łączny czas pracy nad dokumentem w układzie: ilość godzin:ilość minut:ilośc sekund.
=DOKINFO("czas";"[mm]") zwróci, podany w minutach, łączny czas pracy nad dokumentem.
=DOKINFO("utworzony";"dd. mmmm yyyy") zwróci datę utworzenia dokumentu w postaci dzień. (liczba.) miesiąc (słownie) rok(liczba) np. 16. stycznia 2021
Kod: Zaznacz cały
Function DokInfo(optional info, Optional styl)
REM Funkcja zwraca wskazaną przez parametr informację o dokumencie
REM argument "info" musi być tekstem:
REM "AutorO" - podaje kto jest autorem dokumentu.
REM "Utworzony" - data utworzenie dokumentu.
REM "Zmodyfikowany" - data ostatniej modyfikacji.
REM "AutorM" - autor ostatniej modyfikacji.
REM "Ile" - Liczba sesji z dokumentem.
REM "Czas" - łączny czas pracy nad dokumentem
REM argument "styl", jeśli wystąpi, musi być jednym z dopuszczalnych formatów
REM prezentacji daty i/lub czasu podany jako tekst, tak jak w funkcji TEKST()
REM Autorzy: Jermor & Rafkus. Polskie forum Apache OpenOffice i LibreOffice (2021)
Dim oData As Object, oDoc As Object
If isMissing(info) Or isArray(info) Then DokInfo="Zły argument" : Stop
If IsMissing(styl) Then styl="Standard"
On Local Error GoTo niemodyfikowany
oDoc=ThisComponent.DocumentProperties
info=UCase(info)
With oDoc
Select Case info
Case "AUTORO"
DokInfo= .Author
Case "UTWORZONY"
oData=.CreationDate
With oData
DokInfo=Format(DateSerial(.Year,.Month,.Day)+TimeSerial(.hours,.minutes,.seconds),styl)
End With
Case "ZMODYFIKOWANY"
oData=.ModificationDate
With oData
DokInfo=Format(DateSerial(.Year,.Month,.Day)+TimeSerial(.hours,.minutes,.seconds),styl)
End With
Case "AUTORM"
DokInfo=.ModifiedBy
Case "ILE"
DokInfo=.EditingCycles
Case "CZAS"
DokInfo=Format(.EditingDuration/86400,Iif(styl="Standard","[h]:mm:ss",styl))
Case Else
DokInfo="Zły argument"
End Select
End With
Exit Function
niemodyfikowany:
DokInfo="Dokument nie był modyfikowany"
End Function