• ベストアンサー

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

  • VBAエクセル・・・フォルダ名を取得する

    VBA初心者です。 マクロで、ヘッダー部分にフォルダ名を入力したいのですが、 どのように取得すればよいでしょうか? ThisWorkbook.Path にすると、パスが出てきますが、 \C:\***\△△△\○○○\XXX.xls だとすると、「○○○」だけを入力したいのですが・・・ よろしくお願いいたします。

  • 上位ディレクトリ名(フォルダ名)を取得するには?

    phpファイルが入っている、2階層上位のディレクトリ名(フォルダ名)を取得したいと思っています。 例 http://~.com/aaa/bbb/ccc/test.php test.phpが本体です。 ここから2階層上位のディレクトリ名、ここでは「bbb」を取得するような事はできないでしょうか? test.phpの中に、2階層上位のディレクトリ名を記述したいと思っています。 具体的に言うと、 $name = "●●●"; 上記の●●●に、2階層上位のディレクトリ名を入れたいです。 同じようなファイルが多数あり、「bbb」には様々なフォルダ名があり、test.phpの1つ1つを書き換えるのに手間がかかるので、ディレクトリ名を自動的に取得できれば助かります。 phpの知識がほとんどないため、お力をお借りできればと思い、質問させて頂きました。 アドバイスをお願い致します。

    • ベストアンサー
    • PHP
  • VBA アクティブなセルのシート名を取得したい

    エクセル2010使用です。 VBAで、アクティブなセルのあるシート名を取得する方法を教えてください。  マクロ.xls (マクロシートA1) ←今回のマクロを書き込んだファイル  参照.xls (参照シートA1)  入力.xls (入力シートF3) この3つのエクセルファイルを開きます。 ( )内はそれぞれの前面にあるシート名と選択されたセルです。 入力シートのF3にカーソルをおいて下記マクロを実行すると   MsgBox ActiveSheet.Name & ActiveCell.Address 「マクロシート F3」と返されます・・・ ほしい結果は「入力シート F3」なんです。 このような場合にアクティブセルのあるシート名を取得する方法があれば教えてください。 よろしくお願いいたします。

  • VBAによるカレントフォルダのファイルを検索し開く

    カレントフォルダ内にファイル(コ―ド.xls)を見つけ開き、無ければMSG表示したい。 どのように、したらいいですか? 考えているのは、 Application.DefaultFilePath = ThisWorkbook.Path If ??? Then Workbooks.Open "コード.xls" else msgbox (ThisWorkbook.Path & "にコード.xlsを置いて下さい。") Exit sub end If です。 この???の部分を教えて頂きたいと思います。 よろしくお願いします。

  • フォルダ内にあるファイル名を取得するVBA

    エクセル2010を使用しています。 VBA(マクロ)で以下の作業を実行したいと考えていますが、 初心者につき、ご教示いただけますでしょうか。 「マクロ」ファイルにある「実行」Sheetというにある「実行」ボタンで L2に入力したパス内にあるファイル(.xlsや.xlsmや.xlsbが混在しますが、基本的には全てエクセルファイル)のファイル名を K8から下へ取得したいのですが・・ 参考にしたコードでは うまく動作しませんでした。 以下では、L2のパスを参照するのも組めていないため、コード内に直接パスを書き込んでいますが 実際は、パスを変動させて使いたいので、L2を参照できるようになると助かります。 ※パスは、質問用に仮置きで「パス」としています。 Sub Sample() Dim buf As String, cnt As Long Const Path As String = "パス" buf = Dir(Path & "*.*") Do While buf <> "" cnt = cnt + 8 Cells(cnt, 11) = buf buf = Dir() Loop End Sub また、このコードでは 実行ファイル自体のファイル名も取得してしまうようなので、 実行ファイル以外のファイル名を取得したいです。 ご指導のほど、よろしくお願い致します。

  • ファイル名のみを取得するには?

    Sub 取得() MsgBox ActiveWorkbook.Name End Sub を実行すると 「エクセル.xls」 と取得されますが 拡張子を除いたファイル名だけを取得するにはどうすればいいでしょうか? 「エクセル」だけを取得したいです。 よろしくお願いします。

  • ExcelVBAで前後のパスとパス名を取得したい。

    Excel2000のVBAで現在いるフォルダの前後のフォルダ名とパス名を取得したいです。(できればさらに何階層か前後のフォルダも)取得できる関数はありますでしょうか。無ければ何かいい方法を教えてほしいです。お願いします。

  • フォルダ内にあるファイルを取得したい

    エクセル2010を使用しています。 VBA(マクロ)で以下の作業を実行したいと考えていますが、 初心者につき、ご教示いただけますでしょうか。 「マクロ」ファイルにある「実行」Sheetというにある「実行」ボタンで L2に入力したパス内にあるファイル(.xlsや.xlsmや.xlsbが混在しますが、基本的には全てエクセルファイル)のファイル名を K8から下へ取得したいのですが・・ 参考にしたコードでは うまく動作しませんでした。 以下では、L2のパスを参照するのも組めていないため、コード内に直接パスを書き込んでいますが 実際は、パスを変動させて使いたいので、L2を参照できるようになると助かります。 ※パスは、質問用に仮置きで「パス」としています。 Sub Sample() Dim buf As String, cnt As Long Const Path As String = "パス" buf = Dir(Path & "*.*") Do While buf <> "" cnt = cnt + 8 Cells(cnt, 11) = buf buf = Dir() Loop End Sub また、このコードでは マクロを実行するファイル自体のファイル名も取得してしまうようなので、 自身のファイル名以外のものを取得することは可能でしょうか。 ご指導のほど、よろしくお願い致します。

  • VBAを利用して、呼び出し元マクロのフルパスを取得

    現在、エクセルマクロの勉強をしているのですが、ご質問があります。 早速ですが、[マクロA]から[マクロB]を呼び出す時、[マクロA]のフルパスを[マクロB]から取得する事はできるのでしょうか。 [マクロA]のファイル名に関しては、"AAA_111.xls"だったり"AAA_222.xls"だったりします。 あいまい検索で実行中のブックの名前を取得し、そのファイル名を元にフルパスは分かるものでしょうか。 もしくは、効率の良い方法がありましたら、ご教授下さい。

  • エクセルで自分自身のWEBアドレスを取得するには

    エクセルのBOOKをサーバ上に置いています。 このBOOKのマクロで、自分自身のWEBアドレス(ツールバーのWEBで表示されるアドレス)を取得するにはどのようなコードにあるのでしょうか? Thisworkbook.path だと、各自がつけたドライブ名(E:とかF:)でしか取れず\\で始まるサーバーのアドレスが取得できません。

このQ&Aのポイント
  • 数週間前からたまに電話が繋がらないとお客様から報告が数回ありましたが、とうとう本日からまったく繋がらなくなりました。MDC-J4940DNのトラブル解決方法をご紹介します。
  • お使いの環境について、iOSで有線LAN接続されていることがわかりましたが、電話回線の種類は不明です。MDC-J4940DNの電話トラブルの原因と対策についてご説明します。
  • お困りのMDC-J4940DNによる電話の繋がらない問題を解決するために、まず環境設定や回線接続を確認してみましょう。その後、製品のトラブル解決方法を試してみてください。
回答を見る

専門家に質問してみよう