2012-09-15 43 views
2

如何確定OpenOffice或LibreOffice文檔中當前打開文檔的路徑?我想將路徑轉發到外部應用程序。[Libre | Open] Office中當前文檔的路徑

更具體地說我想從沒話說,在全屏模式下的視頻文件,啓動外部播放器:

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

最後一個參數,我需要的路徑,當前打開的文件,以追加它。不指定路徑結果引用當前路徑(由CurDir()函數給出),這是不同的。

LibreOffice宏是否真的有很好的參考?我發現的唯一比較好(但很難搜索)的文件是Andrew Pitonyak的「OpenOffice Macros Explained」。

回答

5

在此期間我找到了一個可行的解決方案。看看這裏:

Sub RunSomeMovie 
    GlobalScope.BasicLibraries.loadLibrary("Tools") 
    Shell("/usr/bin/mplayer -fs ", 2, "" & Tools.Strings.DirectoryNameoutofPath(ThisComponent.getURL(),"/") & "/media/somemovie.mp4") 
End Sub 
4

讓你使用這個簡單的命令將當前文檔路徑:

ThisComponent.getURL() 

CURDIR()僅僅是不可靠的所有OS BTW,我發現在Pitonyak書,你引以爲我沒那信息知道並發現非常珍貴,所以感謝分享它。

+0

謝謝!我可以確認這是我正在尋找的答案。說實話,我不得不承認,我已經找到了解決方案(請參閱下文)。 – dubbaluga

3

我用的LibreOffice 4.2.0.4工作,下面的代碼爲我工作:

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

變量「目錄」現在包含當前文檔的路徑。

2

僅當文檔被保存(或從保存打開)時文檔纔有位置。此外,從LibreOffice Base內部打開的表單本身並不具有位置。只有odt有一個位置。因此,雖然:

ThisComponent.hasLocation()

返回true,則位置爲空字符串(認爲這是一個bug)。 要獲得的位置,在這種情況下,你必須訪問「父」:

ThisComponent.Parent.hasLocation()(或ThisComponent.Parent.getURL())

當然,那麼你必須到「traslate」它可讀: Tools.Strings.DirectoryNameoutofPath