マクロを動かしている自身のファイルパスをとるときは下記のようにできます。(参考先そのままですが...)
Sub Macro01Dim oUrl As String
'oUrl = StarDesktop.CurrentComponent.getURL
oUrl = ThisComponent.getURL
MsgBox oUrl
MsgBox ConvertFromUrl(oUrl)
End Sub
パスの取得は
StarDesktop.CurrentComponent.getURL
でも
ThisComponent.getURL
どっちでもOKのようです。
ただ、取得したパスはエンコードされたURL形式(file://...)なので注意が必要です。
ConvertFromUrl関数で、URL形式をWindowsのパス形式(バックスラッシュ形式)にしてくれます。
しかし、ファイルのフルパスからディレクトリパスを取れそうな関数はぱっと見つからなかったので、地道に文字列操作することにしました。
(もしそのような関数あれば教えてください)
Dim strTest As StringstrTest = "c:\aaaa\bbb\ccc.ods"
Dim iCnt As Integer
Dim iRes As Integer
iCnt = 1
Do While iCnt <> 0
iCnt = InStr(iCnt+1, strTest , "\" )
If iCnt <> 0 Then
iRes = iCnt
End If
Loop
strTest = Left(strTest, iRes)
MsgBox strTest
参考: