マクロ/全般/005

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


    Other languages:

    説明

    関数 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

    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