• ベストアンサー

LBoundでフォルダ名を取得したい。

マクロで、フォルダ名を取得したいのですが、 どのように取得すればよいでしょうか? ThisWorkbook.Pathでパスを取得して \C:\***\△△△\○○○\XXX.xls だとすると、「△△△」だけを入力したいのです。 「△△△」は必ずCドライブから2階層下に あります。 パス名 = ThisWorkbook.Path tmp = Split(パス名, "\") MsgBox tmp(LBound(tmp)) としたところ「D」とうドライブ名が取得できたので MsgBox tmp(LBound(tmp,2))としてみたのですが、うまく 「△△△」の部分が取得できません。 よろしくお願いいたします。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

パス名 = ThisWorkbook.Path tmp = Split(パス名, "\") MsgBox tmp(2) こうゆう事では?

matchy4649
質問者

お礼

おっしゃるとおりです。出来ました! LBoundは不要だったのですね! ありがとうございました。

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

#2 は、読み間違えました。#2の内容は、無視してください。 パス名 = "\C:\***\△△△\○○○\XXX.xls" というなら、 MsgBox tmp(3) 最初に、\ がなければ、tmp(2)です。

  • NYAx2
  • ベストアンサー率27% (3/11)
回答No.4

LBound(tmp,2)はtmpが二次元の時つまり、tmp(n,0)、tmp(n,1)のように、n×2の構造のときに、要素の下限を調べる場合に用いるものです。 従ってANO.1の回答のようになりますが、多分tmp(3)になると思われます。 自分はANO.2の回答を支持します。

matchy4649
質問者

お礼

LBoundの使い方もありがとうございます!

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

MsgBox ThisWorkbook.Path & vbCrLf & Split(ThisWorkbook.Path, "\")(2) tmp = Split(パス名, "\") 配列tmpのインデックスは、0からになります。 \で区切った3番目(インデックスは2)を取り出せば良いです。

matchy4649
質問者

お礼

なるほど、このやり方もあるのですね。 ありがとうございました!

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 初歩的なことですが、LBound ではなくて、UBound です。 でも、私なら、以下のように書きますね。 Split 関数を使う以上は、受ける変数 tmp は、Variant ですが、以下なら、tmp は、String型で済みます。 パス名 = ThisWorkbook.Path tmp = Mid(パス名, InStrRev(パス名, "\") + 1) MsgBox tmp

matchy4649
質問者

お礼

InStrRevも解説本に載っていたのですが 素人なので使い方が分からず、途方に くれておりました。勉強になります。 ありがとうございました!

関連するQ&A