- ベストアンサー
VB超初心者ですみません。
急いでいるので質問させて頂きました。 StrSPathtという変数には "F\ツール\AAA\TEST\" とい値がセットされているとします。 そのうちの "TEST"という文字列のみ別の変数に セットしたい場合どのようにしたらよいでしょうか? (必ずディレクトリの一番下位階層のフォルダ名を取得) すみませんよろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
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に格納されます
その他の回答 (4)
- iwaiwaiwa
- ベストアンサー率18% (25/137)
すみません。↓の者ですが、括弧が一つ抜けてました: (セットしたい変数) = tmpArr(UBound(tmpArr))
- iwaiwaiwa
- ベストアンサー率18% (25/137)
簡単に考えていいと思います。 Dim tmpArr() As String tmpArr = Split(StrSPatht, "\") (セットしたい変数) = tmpArr(UBound(tmpArr) でいいのでは?VBAでテストした限りでは取得できます。
まあ、何でもかんでも関数で求めるが大好きな者です。 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
- king_joe1006
- ベストアンサー率37% (70/189)
StrSPatht = "F\ツール\AAA\TEST\" FolderName = Left(StrSPatht, Len(StrSPatht) - Len(Dir(StrSPatht))) でどうでしょう?
補足
すみません、上記うまくゆきませんでした。 StrSPatht = "F:\ツール\AAA\" の場合で"AAA"というフォルダ名取得するというようにしたい場合で再度お願いいたします。
お礼
出来ました。 ありがとうございました。