OOobbs/48
質問
OOo1.0.1を使っているのですが 例えばSDカード内にOOoのDataを保存しているのですが パソコンにはPCカードアダプタを使用して認識させます。 で、別のパソコンに差し込んだときにドライブが違ったり、環境が少し違ったりするのですがそのために絶対パス(?)だとエラーがでます。 マクロで相対パスのやり方を教えてください。 よろしくお願いいたします。 回答
「あるファイルの絶対パスから,相対的な位置にある別ファイルへの絶対パスを作成する。」この方法であれば,取得したあるファイルの絶対パスの文字列をすこし変更することで行えます。アクセスしたい別のファイルが,「あるファイル (始めの位置とする)」同じドライブにあるファイルであればうまくいくと思います。 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:/" の部分を取得すれば,相対パスを使用しなくても続きのファイル名をつなげてやることで絶対パスを使用できます。
|