• ベストアンサー

エクセルVBAでパスの¥マークについて

このマクロを記述したBOOKと同じフォルダー内にある、シート001.xls を開くマクロです。 同一フォルダーにあるのですから、このような記述になると思います。 Sub kakunin1() Workbooks.Open (ThisWorkbook.Path & "\" & "シート001.xls") End Sub しかし、以下の3つはすべてシート001.xls を開くことができました。 Sub kakunin2() Workbooks.Open (ThisWorkbook.Path & "\" & "\" & "シート001.xls") End Sub Sub kakunin3() Workbooks.Open (ThisWorkbook.Path & "\" & "\" & "\" & "シート001.xls") End Sub Sub kakunin4() Workbooks.Open (ThisWorkbook.Path & "\" & "\" & "\" & "\" & "\" & "\" & "シート001.xls") End Sub パスの¥マークは階層をあらわすのだと思っていましたがいくつ重ねてもなぜ開くのでしょうか?非常に初歩的な質問だと思いますが、ご教示いただければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

>パスの¥マークは階層をあらわす... 階層というより単なるセパレータ記号という認識のほうが良いような気もします。(ん?同じ事?) このセパレータ記号について、Windows NT系以降、拡張されたと読んだ記憶があります。 OSによって少し差があるようですが。 例えばドライブ直下の場合 Workbooks.Open "C:\\シート001.xls" これはwin2000では開きません。winXPでは開くのではないでしょうか。 下記サイトも参考にされると良いですよ。 『パス名の脆弱性を回避する』 http://www.officetanaka.net/other/extra/tips05.htm

merlionXX
質問者

お礼

さっそくありがとうございます。 参考URL拝見しました。 『パスの区切りである「¥」は複数続けてもエラーになりません。 「..」などの相対パスも指定できますし、そのとき存在しないパスが含まれていてもOKです。 パスの指定はWindowsが寛容に処理してくれています』 ということですか・・・・。 知りませんでした。

その他の回答 (1)

  • SortaNerd
  • ベストアンサー率43% (1185/2748)
回答No.2

試してみました。 WindowsXPのコマンドプロンプトでは、/と\は同様に扱われ、複数続けても認識します。 WindowsXPのエクスプローラでは、/と\は同様に扱われますが、複数続けると認識しません。 Windows2000のコマンドプロンプトでは、/はディレクトリ区切りとして扱われませんが、\を複数続けても認識します。 Windows2000はしかしエクスプローラでは/と\を同様に扱います。複数続けると認識しません。

merlionXX
質問者

お礼

コマンドプロンプトというのは使ったことがありませんが、OSによって違いがあるんですね。 ありがとうございました。

関連するQ&A