[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『フォルダ名の取得』(ゴイスー)
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.