「Web出版サイト」ベータ公開

Q&A集[?]

当サイトでのご質問の受付は終了しました

すべてのコンテンツを読み込み専用としたため、回答欄からも投稿できません

Apache OpenOffice/LibreOfficeのご質問はそれぞれのフォーラムへご投稿ください

質問コーナー

サイト内検索

分類メニュー

関連サイト


本日:1
昨日:0
総数:3479
現在:2


カレントディレクトリのパス取得方法

ページOpenOffice.org FAQの登録ページ
投稿者もり
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2009-05-19 15:59:16 (火)
OSWindowsXP
依存するページ
バージョン
edit/refer

メッセージ

回答ページでは行末に「~」を付加する必要はありません

お世話になります。

カレントディレクトリに、CSVファイルを出力したいのですが ネットで色々と検索して下記の方法でカレントディレクトリは sPath に取得できているのですが そこからどうやってディレクトリ部分を取り出していいのか わからなくて困っています。 VBAと違って「/」や「%」や色々な文字の羅列で どう対応していいのかわかりません。 何かいい方法はありますでしょうか?

よろしくお願いいたします。

oDoc =  StarDesktop.getCurrentComponent()
sPath = oDoc.getLocation()
msgbox sPath

素人が口を挟んで申し訳ありません

gorodoku (2009-05-19 16:26:42 (火))

コードをコピペして実行してみました。

ダイアログにはfile:///で始まるパスらしきものが表示されます。
この後にC:/云々となっているので、C:がドライブレター、/がフォルダ階層の区切り(win環境だと一般に\と表記される部分)と思われます。

で、パスに全角文字が含まれていると、その部分が文字が化け(?)て%が含まれる文字列が表示されている様です。

たとえば、c:ドライブの直下に[calctemp]なるフォルダをつくりそこに[temp.ods]としてファイルを保存、マクロを実行すると

file:///c:/calctemp/temp.ods

なるパスが表示されます。%云々は含まれていません。
ということで、提示されているコードでパスはそれなりに正常に取得されていると思いますがいかがでしょうか?

無題

tani (2009-05-19 16:41:59 (火))

文字化けというかURLエンコードですね。(パスもURL形式です)
OpenOffice.orgのBasicのヘルプ画面でconvertToURLとかconvertFromURLとかの組み込み関数を調べてみてください。

んで問題のディレクトリ名はconvertFromURLかけた文字列から文字列操作とか配列操作とかで抽出って感じだと思います。

無題

gorodoku (2009-05-19 16:48:50 (火))

taniさん、フォローありがとうございます。

無題

gorodoku (2009-05-19 16:56:37 (火))


こんな感じでいかがでしょうか。

oDoc = StarDesktop.getCurrentComponent()
sPath = oDoc.getLocation()
spath = ConvertFromURL(spath)
msgbox sPath

当方の環境ではうまいことパスが表示されているようです。
ファイル名も含めてなので、taniさんの言われている通り、文字列操作などでファイル名部分を取り除いていくということでいかがでしょう。

無題

もり (2009-05-19 17:30:13 (火))

ありがとうございます。

ConvertFromURLを使ってうまく作成する事ができました。
大変助かりました。
下記のように作成しました。

oDoc =  StarDesktop.getCurrentComponent()
sPath = ConvertFromURL(oDoc.getLocation())
sPath2 = Left(sPath,Len(sPath)-14)
args(0).Name = "FilterName"
args(0).Value = "Text - txt - csv (StarCalc)"
args(1).Name = "FilterFlags"
args(1).Value = "44,0,60,1"	
ThisComponent.storeToURL(ConvertToUrl(sPath2 & "test.csv"), args())

dir関数とinstr関数

ike@九州 (2009-05-19 18:05:50 (火))

以下だと応用ききます :-)
sPath2 = left(sPath,instr(sPath,dir(sPath))-1)

無題

もり (2009-05-20 13:19:10 (水))

ありがとうございます。

これだと汎用的に使えてとても便利です。
大変助かりました。
ありがとうございました。

お名前:
題名: