プロが教える店舗&オフィスのセキュリティ対策術

Excelでvlookup関数を使っていますが
参照範囲が別ファイルです。

参照先が絶対パスになってしまいますが
これでは他人にこのファイルを提供した場合つかえません。

そこで相対パスにしたいのですができません。

どうしたら良いのでしょうか?

=VLOOKUP(C2,'C:\Documents and Settings\user1\管理\[20130000.xls]Sheet1'!$D$6:$E$634,2,FALSE)
これを
=VLOOKUP(C2,'./[20130000.xls]Sheet1'!$D$6:$E$634,2,FALSE)
にしたい。

A 回答 (5件)

>相対パスで入力しても絶対パスになってしまいます。


ソフトの設計思想でそうなっていると思います。
参照対象のファイルを開いているときに直接指定した時は[ファイル名]で良いのですが、参照対象のファイルを閉じると自動的に絶対パスが自動的に付加されますので、閉じたファイルを指定するときは絶対パスが必須という仕様になっているようです。
    • good
    • 0
この回答へのお礼

そうですね。
ありがとうございます。

お礼日時:2013/10/07 20:26

#3の回答者です。


こちらで、もう一度、片方のPCに、Excel2003をインストールして、試してみました。
どこのフォルダに置いても、フォルダ名がコンフリクトしない限りは、問題は発生しませんでした。

>相対パスで入力しても絶対パスになってしまいます。

相対パスで入力するという話は書いたつもりもありません。
一定の方法で入れれば、相対パスになるという事実だけです。

どこかで、こちらの話をお間違えになっていませんか?

もう一度、順序建てて、私の方法を書き直しますが、

・数式のあるファイル(ブック)と同じフォルダの適当な下位に、フォルダ([データ集])を置いて、そこに「20130000.xls」置くようにする。
 \----A_Book.xls
  |
  +---\Data\--B_Book.xls (今回は[20130000.xls])

・B_Bookを開いて、数式を、再度データをリンクさせる。

=VLOOKUP(C2,[20130000.xls]Sheet1!$B$1:$G$634,6,FALSE)
となるはずです。

そうしたら、数式は完成ですから、保存して、下位フォルダと共に、相手に渡せばよいわけです。次回からは、Dataフォルダ(下位フォルダ)側は開けなくても認識はしていますが、2007以上のバージョンでは、プロテクトが掛かり、リンクを更新するか聞いてくるはずです。

ご自分でも、試してみてください。
    • good
    • 2
この回答へのお礼

ありがとうございます。
Excel2000
ですがどうしても絶対パスになります。

お礼日時:2013/10/07 20:30

Unix もDos(コマンドプロンプト)も、そんなに大きく変わらないけれども、Excel の数式の中では、コマンドプロンプトのようには書けなかったと思います。

Excelの中の数式の中身は、保存される時は、文字列として納まるけれども、もともと、その部分は揮発性ですから、Excelのアプリ側の処理になるので勝手が利かないような気がします。

ググってみたけれども、「相対パス」の明快な解答も見つかりませんでした。
以前は、プロパティの[ハイパーリンクの基点]の部分に、書き込めば良かったような気がしますが、やってみたけれども、うまくいきません。理由があって、私のPCには、下位バージョンを削除してしまったので、xlsファイルを下位バージョンで、試すことができませんが、こんな方法があるはずです。

どうやら、もう解決しているような気がしましたが、こちらからも後押ししておきます。

>フォルダー1にはデータ集という名称のフォルダを作って
>もちろん他人に渡すときには
>フォルダー1ごと渡します。

・数式のあるファイルと同じフォルダの適当な下位フォルダ([データ集])を置いて、そこに「20130000.xls」置くようにする。

・数式は、その下位フォルダのデータをリンクさせる。

後は、相手に渡す場合は、そのフォルダの下位フォルダと一緒に渡してあげれば良いはずです。
    • good
    • 1
この回答へのお礼

ありがとうございます。
相対パスで入力しても絶対パスになってしまいます。
Microsoftの何か考えがあってのことでしょう。

お礼日時:2013/10/06 06:55

>どうしたら良いのでしょうか?


相対パスの指定方法は作業中のファイルの位置から参照ファイルに至るツリー構造を記述すれば良いことになります。
コマンドプロンプトでのディレクトリの移動を相対指定する表記法がそれに当たります。
親ディレクトリへは ..\ であり、兄弟の場合は ..\Brothers のように記述すれば良いことになります。

>パスの記述が間違っていました。
>UNIXでは ./データ集/2013.xls となりましたね。
Windows OSでは/の代わりに\(バックスラッシュも同じ)を使います。
.\ はカレントディレクトリを差していますが子ディレクトリへ移動のときは .\ を省略します。
UNIXの表記法と類似していますので準用すれば良いと思います。
    • good
    • 1
この回答へのお礼

ありがとうございます。
相対パスで入力しても絶対パスになってしまいます。
Microsoftの何か考えがあってのことでしょう。

お礼日時:2013/10/06 06:56

>そこで相対パスにしたいのですができません。



相対パスにするためには、
カレントフォルダとの位置関係を記述する必要があります。

で、エクセルで保存とか読み込みをやってしまうと、カレントフォルダが変わってしまい、ファイルを操作している人の状況次第で、参照できたりできなかったりということが発生してしまいます。

ですので、相対パスで記述しておくことはお薦めしません。

必要であれば、共有のネットワークドライブ等にファイルを置かれてはどうでしょう?

この回答への補足

パスの記述が間違っていました。
UNIXでは
./データ集/2013.xls
となりましたね。

補足日時:2013/10/03 19:02
    • good
    • 0
この回答へのお礼

ありがとうございます。
言葉足らずでもうしわけありません。
私はUNIXの機械の管理者をしていた経緯があります。

基本的な考え方は
フォルダー1には
 20131000.xls
 20131001.xls
 20131002.xls
 20131003.xls
 20131004.xls
ファイルを毎日作っていきます。
要するに20131004.xlsファイルは 20131000.xlsを読み込んだ後で今日の日付にして保存していきます。

フォルダー1にはデータ集という名称のフォルダを作って
 そこに設定ファイル 2013.xls をおきます。
各日のファイルは参照先としてunixのように../2013.xls
としたいのですが

もちろん他人に渡すときには
フォルダー1ごと渡します。
このようにすることによって誰にでも配布することができるとはおもいませんでしょうか?

お礼日時:2013/10/03 18:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A