マクロ/全般/005
TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Donate
説明
関数 FileDateTime(Text As String)
は、システムのファイル・パスを文字列パラメータとして指定し、ファイルの作成日時や最終変更日時を含むテキストを返します。 書式が指定されていない場合、MM/DD/YYYY HH:MM:SS になります。例えば、MsgBox FileDateTime("/home/user1/Documents/foo.odt")
のようになります。
この関数は実際、LibreOfficeのいくつかの中間バージョンでバグ tdf#63306 の影響を受けていました。
LibreOffice API[1] を使用すると、このバグを回避でき、他の強力なファイルアクセス機能も提供されています。
以下に示す例は、 getDateTimeModified メソッドを使用して、ファイルの作成日時や最終変更日時を取得する方法を示しています。[2]
このメソッドはURLを受け取り、 DateTime[3]と呼ばれる構造体を返します。 結果の表示は、 CDateFromUnoDateTime による変換、または関数 Format[4]によって行われます。
Code
LibreOffice Basic:
Option Explicit
Sub DateTimeInfo()
'''指定したファイルの最終更新日時を表示します。'''
Dim oSFA As Object
Dim oDateFile As New com.sun.star.util.DateTime
Dim sUrl As String
sUrl = "/home/user1/Documents/foo.odt"
oSFA = createUnoService("com.sun.star.ucb.SimpleFileAccess")
oDateFile = oSFA.getDateTimeModified(convertToURL(sUrl))
MsgBox CDateFromUnoDateTime(oDateFile),0, "DateTimeInfo()"
With oDateFile
MsgBox "<span lang="en" dir="ltr" class="mw-content-ltr">Date & time last modified info from</span>" & CHR$(10) & _
sURL & " :" & CHR$(10) & CHR$(10) & _
.year & format(.month, "-00-") & format(.day, "00") & " " & _
format(.hours, " \@\ 00") & format(.minutes, "\:00\:") & format(.seconds, "00") _
,0, "DateTimeInfo()"
End With
End Sub ' DateTimeInfo()
Example ODT file to test macro
Notes
- ↑ The LibreOffice API (Application Programming Interface) allows interaction with various programming languages.
- ↑ See the API documentation for the XSimpleFileAccess interface.
- ↑ See the API documentation for the DateTime struct
- ↑ See the documentation for the Format function