Jump to content

マクロ/全般/005

From The Document Foundation Wiki
This page is a translated version of the page Macros/General/005 and the translation is 100% complete.


説明

関数 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  "最終更新日時" & 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()

 マクロをテストするODTファイルの例 

メモ

  1. The LibreOffice API (Application Programming Interface) allows interaction with various programming languages.
  2. See the API documentation for the XSimpleFileAccess interface.
  3. See the API documentation for the DateTime struct
  4. See the documentation for the Format function