• ベストアンサー

VB超初心者ですみません。

急いでいるので質問させて頂きました。 StrSPathtという変数には "F\ツール\AAA\TEST\" とい値がセットされているとします。 そのうちの "TEST"という文字列のみ別の変数に セットしたい場合どのようにしたらよいでしょうか? (必ずディレクトリの一番下位階層のフォルダ名を取得) すみませんよろしくお願いいたします。

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

  • ベストアンサー
回答No.3

Dim i As Integer Dim ph As String StrSPatht = "F:\ツール\AAA\" ph = Mid(StrSPatht, 1, Len(StrSPatht) - 1) Do Until InStr(ph, "\") = 0 i = InStr(ph, "\") ph = Mid(ph, i + 1, Len(ph)) Loop で最終的に"AAA"が変数phに格納されます

rariko
質問者

お礼

出来ました。 ありがとうございました。

その他の回答 (4)

  • iwaiwaiwa
  • ベストアンサー率18% (25/137)
回答No.5

すみません。↓の者ですが、括弧が一つ抜けてました: (セットしたい変数) = tmpArr(UBound(tmpArr))

  • iwaiwaiwa
  • ベストアンサー率18% (25/137)
回答No.4

簡単に考えていいと思います。 Dim tmpArr() As String tmpArr = Split(StrSPatht, "\") (セットしたい変数) = tmpArr(UBound(tmpArr) でいいのでは?VBAでテストした限りでは取得できます。

noname#22222
noname#22222
回答No.2

まあ、何でもかんでも関数で求めるが大好きな者です。 Private Sub Command1_Click()   Dim strSPath As String      strSPath = "F:\ツール\AAA\TEST\"   MsgBox CutStr(strSPath, "\", CharCount(strSPath, "\")) End Sub "\" で区切られている文字列 strSPath から区切り文字で分割した4番目を切り出せという関数です。 ? Cutstr("F:\ツール\AAA\TEST\", "AAA\", 2) TEST\ ? CutStr(Cutstr("F:\ツール\AAA\TEST\", "AAA\", 2), "\",1) TEST という切り出しも可能です。 Option Explicit Public Function CharCount(ByVal Text As String, ByVal C As String) As Integer   Dim I As Integer   Dim L As Integer   Dim N As Integer      L = Len(Text)   For I = 1 To L     N = N + Abs(StrComp(Mid$(Text, I, 1), C, vbTextCompare) = 0)   Next I   CharCount = N End Function Public Function CutStr(ByVal Text As String, _             ByVal Separator As String, _             ByVal N As Integer) As String   Dim strDatas() As String      strDatas = Split("" & Separator & Text, Separator, , 0)   CutStr = strDatas(N * Abs((N <= UBound(strDatas)))) End Function

回答No.1

StrSPatht = "F\ツール\AAA\TEST\" FolderName = Left(StrSPatht, Len(StrSPatht) - Len(Dir(StrSPatht))) でどうでしょう?

rariko
質問者

補足

すみません、上記うまくゆきませんでした。 StrSPatht = "F:\ツール\AAA\" の場合で"AAA"というフォルダ名取得するというようにしたい場合で再度お願いいたします。

関連するQ&A