3

OpenOfficeまたはLibreOfficeドキュメントで現在開いているドキュメントのパスを確認するにはどうすればよいですか?パスを外部アプリケーションに転送したい。

より具体的には、フルスクリーンモードのビデオファイルでimpressから外部プレーヤーを起動したいと思います。

Shell("/usr/bin/mplayer", 2, """ -fs"" some-file-in-same-dir-as-document.mp4")

最後のパラメータについては、追加するために現在開いているドキュメントへのパスが必要になります。CurDir()パスを指定しないと、(関数によって指定された)現在のパスを参照することになります。これは別のことです。

LibreOfficeマクロの良いリファレンスは実際にありますか?私が見つけた唯一の比較的良い(しかし検索するのが難しい)文書は、AndrewPitonyakによる「 OpenOfficeMacrosExplained 」です。

4

4 に答える 4

6

その間に、私は実行可能な解決策を見つけました。ここを見て:

Sub RunSomeMovie
    GlobalScope.BasicLibraries.loadLibrary("Tools")
    Shell("/usr/bin/mplayer -fs ", 2, "" & Tools.Strings.DirectoryNameoutofPath(ThisComponent.getURL(),"/") & "/media/somemovie.mp4")
End Sub
于 2012-12-14T17:24:29.930 に答える
5

現在のドキュメントパスを取得するには、次の簡単なコマンドを使用します。

ThisComponent.getURL()

CurDir()は、すべてのOSで信頼できるわけではありません。ところで、あなたが引用したPitonyakの本の情報は、私が知らなかったものであり、非常に貴重であることがわかったので、共有していただきありがとうございます。

于 2012-12-13T16:29:34.083 に答える
4

私はLibreOffice4.2.0.4を使用していますが、次のコードが機能します。

    Dim Dir as String
    GlobalScope.BasicLibraries.loadLibrary("Tools")
    Dir = Tools.Strings.DirectoryNameoutofPath(ThisComponent.url, "/")

変数「dir」には、現在のドキュメントのパスが含まれています。

于 2014-12-07T10:27:40.663 に答える
3

ドキュメントには、保存されている(または保存されているから開いている)場合にのみ場所があります。さらに、LibreOffice Base内から開かれたフォームには、それ自体に場所がありません。odtだけが場所を持っています。したがって:

ThisComponent.hasLocation()

Trueを返します。場所は空の文字列です(バグと見なしてください)。そのような場合、場所を取得するには、「親」にアクセスする必要があります。

ThisComponent.Parent.hasLocation()(またはThisComponent.Parent.getURL())

もちろん、次のコマンドで読み取り可能に「翻訳」する必要があります:Tools.Strings.DirectoryNameoutofPath

于 2015-05-26T10:55:31.130 に答える