3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援→開発戻り浦島太郎状態の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。

(OpenOffice Basic)自身のファイルパスを表示する

マクロを動かしている自身のファイルパスをとるときは下記のようにできます。(参考先そのままですが...)

Sub Macro01

Dim 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 String

strTest = "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

参考:

ファイル名を表示する - OpenOffice.org Basic