[[20100105214348]] 『マクロにおける相対パスについて』(kyoma) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロにおける相対パスについて』(kyoma)

お世話になります。マクロ初心者です。よろしくお願いします。

現在MO(H:¥)でVBAを書いています。その際、VBAを保存するファイルは基礎データでこれの1つ下のフォルダ内のファイルを参照するようにしなければなりません。

絶対パスではうまくいくのですが、別の環境(たとえば、デスクトップに丸ごとコピーして実行とか、他のパソコンにMOごと移動してドライブ名が変わったり・・・)になると当然参照ファイルが見つからなくなります。

このような場合は、相対パスでファイルを指定するように書いてあげれば良いと思うのですが、書き方がわかりません。

どなたかご指導をお願いします。


 ThisWorkbook.Path
 で自ブックが格納されているフォルダのパスを取得できます。
 自ブックのフォルダの一階層下ですと、

 ThisWorkbook.Path & "\test"
 などと指定します。

 またFileSystemObjectを使って、

 CreateObject("Scripting.FileSystemObject").GetParentFolderName(ThisWorkbook.Path)
 とすると、自ブックが格納されているフォルダの一階層上を取得できます。

 (MARBIN)

MARBIN さん

早速のご回答ありがとうございます。

実は、このステートメントの前に、

Workbooks.Open Filename:=ThisWorkbook.Path & "\test"

をつけてやっているのです。が、エラーです。

要は、一階層下のファイルを開きたいのですが、教えていただけませんか?

よろしくお願いします。


 ThisWorkbook.Path & "\test" 

 はフォルダ名です。
 ファイル名を付加してやる必要があります。

 Workbooks.Open Filename:=ThisWorkbook.Path & "\test\hoge.xls"
 (MARBIN)

 もしかしたら「一階層下」の認識が違っているかもしれません。

 D:\A
 D:\A\B
 D:\A\B\C

 の場合、
 D:\A\B
 の一階層下は
 D:\A
 D:\A\B\C
 のどちらになりますか?
 (MARBIN)

MARBIN さん

ありがとうございます。2つ上のご指摘を今、試したところ希望通りの結果がでました!

大変、勉強になりました。

またの機会がありましたら、よろしくお願いします。


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.