[[20090629111554]] 『フォルダ名の取得』(ゴイスー) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『フォルダ名の取得』(ゴイスー)

 C:\list\name\50-01\001北島\マクロ.xls
 C:\list\name\60-01\01山本\マクロ.xls
 C:\list\name\50-0001\005小金沢\マクロ.xls

 このようなフォルダ構成で
 それぞれにマクロ.xls(←同じ内容のファイル)を格納し、
 マクロ.xls にこのように記述しました。

 Sub foldername()

 	'マクロ.xlsが格納されているフォルダのパス取得
 	Range("A1") = ThisWorkbook.Path

 	ChDir ThisWorkbook.Path
 	ChDir ".."

 	'マクロ.xlsが格納されている1つ上の階層のフォルダパス取得
 	Range("A2") = CurDir()

 End Sub

 これを実行するとそれぞれ次のように文字列を取得できますが、

 [セルA1]
 C:\list\name\50-01\001北島
 C:\list\name\60-01\01山本
 C:\list\name\50-0001\005小金沢

 [セルA2]
 C:\list\name\50-01
 C:\list\name\60-01
 C:\list\name\50-0001

 ここから、下記のようにフォルダ名のみを取得する方法を教えてください。

 [セルA3]
 001北島
 01山本
 005小金沢

 [セルA4]
 50-01
 60-01
 50-0001

 こんなんでどうでしょうか。(ROUGE)
 
Sub Goisu()
Dim x
x = Split(ThisWorkbook.Path, "\")
Range("A1").Value = Join(x, "\")
Range("A3").Value = x(UBound(x))
Range("A4").Value = x(UBound(x) - 1)
ReDim Preserve x(UBound(x) - 1)
Range("A2").Value = Join(x, "\")
End Sub


 ありがとうございました。
 大変助かりました。

 > ReDim Preserve ・・・・・
 これが何を意味するのか、ゴイスーにはよく分かりませんでした。

 今後これを生かしていくためにも
 教えていただけると助かります(ゴイスー)


 > > ReDim Preserve ・・・・・
 > これが何を意味するのか、ゴイスーにはよく分かりませんでした。
 ReDimステートメントをHELPで確認していただけると分かると思います。
 
こんな方法もあります。
 
Dim myPath As String, fso As Object
myPath = ThisWorkbook.Path
Set fso = CreateObject("Scripting.FileSystemObject")
With fso.GetFolder(myPath)
    Range("A1").Value = .Path
    Range("A2").Value = .ParentFolder
    Range("A3").Value = .Name
    Range("A4").Value = fso.GetFolder(.ParentFolder).Name
End With
 
(ROUGE)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.