Top > OOobbs > 48

OOobbs/48 Edit

  • サマリ: 相対パス
  • 環境: Calc
  • 状態: 解決
  • 投稿者: ウズマキナルト?
  • 投稿日: 2005-02-07 (月) 09:14:30

質問 Edit

OOo1.0.1を使っているのですが 例えばSDカード内にOOoのDataを保存しているのですが パソコンにはPCカードアダプタを使用して認識させます。 で、別のパソコンに差し込んだときにドライブが違ったり、環境が少し違ったりするのですがそのために絶対パス(?)だとエラーがでます。 マクロで相対パスのやり方を教えてください。 よろしくお願いいたします。

回答 Edit

  • SD カード内のある OOo のファイルに存在する BasicLibrary のマクロから同じ SD カード内の他のファイルへの相対パスを記述したい。ということでよいのでしょうか? -- はにゃ?? 2005-02-08 (火) 00:44:24
  • 半角カタカナは,表示環境によって見られないことがあるのでできるだけ使用しないでください。 -- はにゃ?? 2005-02-08 (火) 00:46:31
  • 返事遅くなりました。半角カタカナの件了解いたしました。すみませんでした。それから、質問していた件ですがはにゃさんの言われるとおりだと思います。どうぞよろしくお願いいたします。 -- ウズマキナルト? 2005-02-09 (水) 18:03:09
  • OpenOffice.org の機能として相対パスを使用するのは難しいので,代替の方法を提案します。 -- はにゃ?? 2005-02-10 (木) 00:36:05

「あるファイルの絶対パスから,相対的な位置にある別ファイルへの絶対パスを作成する。」この方法であれば,取得したあるファイルの絶対パスの文字列をすこし変更することで行えます。アクセスしたい別のファイルが,「あるファイル (始めの位置とする)」同じドライブにあるファイルであればうまくいくと思います。

ThisComponent のプロパティーとして Location というものがあります。このプロパティーは ThisComponent のショートカットとなるドキュメントオブジェクトの本体であるドキュメントファイルの場所を保持するプロパティーです。このプロパティーは URL 形式でファイルへのフルパスを与えてくれます。

たとえば,C:\usr\OOo.sxw ファイルであれば

Sub location_1
Dim oDoc As Object
  oDoc = ThisComponent
  MsgBox oDoc.Location
End Sub

とすると "file:///C:/usr/OOo.sxw" と表示されます。URL 形式での表示では,パスの区切りが "/" (バックスラッシュ) になっています。

ファイルのあるドライブレターが変わっていても,最初のファイルの Location を利用して "file:///C:/" の部分を取得すれば,相対パスを使用しなくても続きのファイル名をつなげてやることで絶対パスを使用できます。

  • 返事遅くなって、すみません!急な仕事で4日ほど出かけておりました。はにゃさんに教えていただいた方法で出来そうな気がしますので、試してみたいと思います。後日結果のほう報告させていただいきます。ありがとうございました。 -- ウズマキナルト? 2005-02-14 (月) 17:03:11
  • できました!おかげさまで自分でパスを切らなくても自動でいけるようになりました。返事おそくなりまして、申し訳ありませんでした。本当にありがとうございました。 -- ウズマキナルト? 2005-02-19 (土) 15:35:34
  • よかったです。じゃあ解決ですね。 -- はにゃ?? 2005-02-19 (土) 21:06:14
  • はい。おかげさまで解決いたしました。ありがとうございました。 -- ウズマキナルト? 2005-03-26 (土) 09:50:19


Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes