[[20190614101008]] 『ThisWorkBook.path が正しいパスを表示しません』(June) ページの最後に飛ぶ

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

 

『ThisWorkBook.path が正しいパスを表示しません』(June)

こんにちは。

ある場所、例えば、ローカルのMyDocuments で Msgbox ThisWorkBook.pathを実行すると「d:\MyDocuments」と表示されるのですが、このマクロを記述したブックを他の場所、例えばネットワーク上 \PC\Documents に移動して Msgbox ThisWorkBook.path を実行しても「d:\MyDocuments」のままになっていることがあります(正しく表示されることもあります)。どのように記述すれば正しく現在のパスを認識するようになるのでしょうか。
よろしくお願いいたします。

< 使用 Excel:Excel2013、使用 OS:Windows10 >


ブックのパスなので、ブックを保存しないといけませんよ?

あと、気になる点としては、通常はDocumentsフォルダはCドライブですが、Dということは、マッピングしたネットワークフォルダだったりしませんか? この場合、ブックを開いたまま、ネットワーク切断したりしませんか?
(???) 2019/06/14(金) 10:55


ありがとうございます。

上書き保存をして再度実行しても同じです。また、d:は、ローカルの保存先をdドライブにしているのでそうなっています。

始めにd:\MyDocumentsに保存して、それぞれの場所でブックを起動(ファイルをダブルクリック)後、次の値を確認すると
             ThisWorkbook.path       CurDir
保存直後          d:\MyDocuments     d:\MyDocuments
ディスクトップに移動    ディスクトップ     d:\MyDocuments
ネットワークドライブ    正しいパス       d:\MyDocuments

この後何度か開いたり閉じたりマクロを実行したりしていると(コードにはブックの共有をOnにしたりOffにしたりするものが含まれています。←ブック共有のコードがないと、正しく表示されます)ThisWorkBook.pathも正しく表示されないことがあります。
あるWebページで、「CurDir」は、ブックの開き方によって変わる(http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_140.html)とあったので、Excelを開いて「ファイル」→「開く」メニューから開くとCurDirも正しく表示されます。
しかし、何度かブック共有のコードを含むマクロを実行していると、「開く」メニューから開いても、ThisWorkBook.path、CurDirどちらにもそのファイルのあるパスが表示されなくなり、こうなってしまうと「上書き保存」をクリックしても更新されません。
何がきっかけでこうなるのかわかりません。
ご経験のある方がおられましたら、よろしくお願いいたします。
(June) 2019/06/14(金) 14:28


DドライブにMyDocumentsを作成してあるのですね。 ならばマッピングは関係ないです。

次に、ThisWorkBook.pathとCurDirは別物ですが、そこの理解は大丈夫でしょうか? 表を見ると、逆に理解しているように見えます。

ThisWorkBook.path は、ブック保存してあれば、不変です。 別のフォルダに保存し直さないと変わりません。 これに対して、CurDirは、マクロのChDir命令で変わりますし、ファイルを開くダイアログでフォルダを移っただけでも変わります。 そして、Excelひとつにつき1か所しか記憶していないので、思ってもいないときに変わる可能性があります。 マクロ内で ChDir していませんか?

CurDirを使えば、現在のパスが得られます。 しかしそれは、手作業でもマクロでも変わってしまう場合があるので信用しては駄目で、ファイルを扱う際はフルパスで行う事が推奨です。
(???) 2019/06/14(金) 14:59


コメント返信:

[ 一覧(最新更新順) ]


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