dポイントプレゼントキャンペーン実施中!

フォルダを一括で作成したいのです(階層がある分)。
添付画像(例)
A列からF列までのデータがあります。
G列のように「う\え\お」の階層で作成したいのです。
それをmkdirコマンドで作成しようと考えています。
関数で考えたのですがどうもうまくいかないようなのでVB等でできませんでしょうか。
実際ファイル名はまだ長く、データの行もかなりあります。
A列からE列は数字ではなく文字列です。

「フォルダを一括で作成したいのです(階層が」の質問画像

A 回答 (6件)

VBじゃなくてVBAでいいんですよね。


フォルダ名を生成するだけなら。

Sub Test()
Dim n As Integer
Dim k As Integer
Dim S(5) As String

For n = 1 To Cells(Rows.Count, 1).End(xlUp).Row
k = 5
Do While k > 1 And Cells(n, k) = ""
k = k - 1
Loop
If k > 1 Then
S(k) = S(k - 1) & "\" & Cells(n, 6)
Else
S(k) = Cells(n, 6)
End If
Cells(n, 7) = S(k)
Next

End Sub
    • good
    • 0
この回答へのお礼

返事が遅くなりまして申し訳ありません。
ありがとうございました。助かりました。

お礼日時:2010/11/09 22:58

お急ぎの様ですが、アドバイスです。


>フォルダを一括で作成したいのです(階層がある分)。
>実際ファイル名はまだ長く、データの行もかなりあります。
実際に何故、この機能が必要になったのでしょうか?

回答者の方もコードを考えることは出来ても実際に業務で使用した事例はないと思います。
さてコードを考える前に
1、すでに指定したフォルダがあった場合、その中にファイルが既にあった場合
--初期化する必要があるのかどうか(全てを削除するコード)
或いは
--そのまま既にあるフォルダを使用し行くのか(既にフォルダーの有無を判断するコード)

2、仮に出来たとして フォルダーとファイルだらけのPCをどうやって管理するのか
--別途ファイル管理のシステムも必要になる。
と云った疑問を感じます。
多分 お金を払ってプロに相談したとしても、同じような質問が来るはずです。
一般的には、データベースとして情報を管理して、必要な部分が出力される機能ではダメですか?
と云われると思います。

この回答への補足

説明がわかりにくくて申し訳ありません。
>実際に何故、この機能が必要になったのでしょうか?
このファイルの目次(?)データからフォルダを作成してそこに引越し(手作業)の作業が生じたのです。
ローカルのPCでまずフォルダを作成し、それをファイルを置くサーバにコピーしようと思っています。

G列には列挙されていません(私が手作業で作成しました)。
フォルダ作成をするためにG列を作成したいのです(それができればフォルダ作成のフリーソフト等でしようと思っています)。関数で考えたのですがどうもわかりません。私はVB初心者なのでもし少しヒントだけでもお教えいただけませんでしょうか。
実データからそのまま取ったので歯抜けになっているところもありわかりにくいのですが、例えば1行目はA1のセルが「A」でその横の列は全部空白なのでF1のセルの「あ」がそのままG1セルになります。2行目はA2のセルが「A」B2のセルが「1」なのでF1の「あ」とF2の「い」を「\」で結合したものをG2のセルに書き出しています。ただB4のセルのように「1」から始まるわけではなく歯抜けの場合もあります。必ずしも「\」で結合する必要もなくセルで区切れればタブの文字コード置換等で「\」にしてもかまいません。

補足日時:2010/11/08 01:02
    • good
    • 0
この回答へのお礼

ありがとうございました。返事が遅くなりまして申し訳ありません。

お礼日時:2010/11/09 23:00

この質問は何回か見ましたが、


ようはG列の文字列は
”どうやってそのように作られるのか”
その条件を提示しないとダメでしょう。

質問の画像には既にG列には値がありますけど、
本来はないハズなのでは?

そこの所が抜けているから希望する回答がつかず、
何回も繰り返しているように見えます。

この回答への補足

説明がわかりにくくて申し訳ありません。
G列には列挙されていません(私が手作業で作成しました)。
フォルダ作成をするためにG列を作成したいのです(それができればフォルダ作成のフリーソフト等でしようと思っています)。関数で考えたのですがどうもわかりません。私はVB初心者なのでもし少しヒントだけでもお教えいただけませんでしょうか。
実データからそのまま取ったので歯抜けになっているところもありわかりにくいのですが、例えば1行目はA1のセルが「A」でその横の列は全部空白なのでF1のセルの「あ」がそのままG1セルになります。2行目はA2のセルが「A」B2のセルが「1」なのでF1の「あ」とF2の「い」を「\」で結合したものをG2のセルに書き出しています。ただB4のセルのように「1」から始まるわけではなく歯抜けの場合もあります。必ずしも「\」で結合する必要もなくセルで区切れればタブの文字コード置換等で「\」にしてもかまいません。

補足日時:2010/11/08 01:03
    • good
    • 0
この回答へのお礼

ありがとうございました。返事が遅くなりまして申し訳ありません。

お礼日時:2010/11/09 23:01

G列にそのような形式で列挙されているならば次のコードを


VBAのModule1に記述し走らせれば勝手に作成されていくと思われる。


Sub NewFord() 'フォルダの作成
Dim Fd As Variant
Dim ScFSO As Object
Dim myFolder As String

For Each Fd In Range("G1:G" & Worksheets(1).Range("G" & Rows.Count).End(xlUp).Row)
Set ScFSO = CreateObject("Scripting.FileSystemObject")
myFolder = ThisWorkbook.Path & "\" & Fd '作成するフォルダの場所
''現在ワークシートがあるフォルダに作成される

If ScFSO.folderexists(folderspec:=myFolder) = False Then
ScFSO.CreateFolder myFolder
'MsgBox "フォルダを作成しました。"
End If
Set ScFSO = Nothing
Next
End Sub


もしもG列にそのように列挙されていないならば、画像見ただけでは、A~E列をどう組み合わせたらG列が作成されているのかパターンが分かりにくいので

そこはなんとか自分で考えてください。

この回答への補足

コードの提示、ありがとうございます。
説明がわかりにくくて申し訳ありません。G列には列挙されていません(私が手作業で作成しました)。
フォルダ作成をするためにG列を作成したいのです(それができればフォルダ作成のフリーソフト等でしようと思っています)。関数で考えたのですがどうもわかりません。私はVB初心者なのでもし少しヒントだけでもお教えいただけませんでしょうか。
実データからそのまま取ったので歯抜けになっているところもありわかりにくいのですが、例えば1行目はA1のセルが「A」でその横の列は全部空白なのでF1のセルの「あ」がそのままG1セルになります。2行目はA2のセルが「A」B2のセルが「1」なのでF1の「あ」とF2の「い」を「\」で結合したものをG2のセルに書き出しています。ただB4のセルのように「1」から始まるわけではなく歯抜けの場合もあります。必ずしも「\」で結合する必要もなくセルで区切れればタブの文字コード置換等で「\」にしてもかまいません。

補足日時:2010/11/08 00:51
    • good
    • 0
この回答へのお礼

ありがとうございました。返事が遅くなりまして申し訳ありません。

お礼日時:2010/11/09 23:02

mkdirでは一階層分しか作れませんから、ループ処理で一階層ずつ作成して行ってください。

この回答への補足

説明がわかりにくくて申し訳ありません。
フォルダ作成をするためにG列を作成したいのです(それができればフォルダ作成のフリーソフト等でしようと思っています)。このG列は私が手作業で作成しました。関数で考えたのですがどうもわかりません。私はVB初心者なのでもし少しヒントだけでもお教えいただけませんでしょうか。
実データからそのまま取ったので歯抜けになっているところもありわかりにくいのですが、例えば1行目はA1のセルが「A」でその横の列は全部空白なので F1のセルの「あ」がそのままG1セルになります。2行目はA2のセルが「A」B2のセルが「1」なのでF1の「あ」とF2の「い」を「\」で結合したものをG2のセルに書き出しています。ただB4のセルのように「1」から始まるわけではなく歯抜けの場合もあります。必ずしも「\」で結合する必要もなくセルで区切れればタブの文字コード置換等で「\」にしてもかまいません。

補足日時:2010/11/08 01:09
    • good
    • 0
この回答へのお礼

ありがとうございました。返事が遅くなりまして申し訳ありません。

お礼日時:2010/11/09 23:02

エクセルの関数でフォルダーなんて作ろう、とするのは、エクセルの関数の基礎がわかってない証拠ですよ。

エクセルの関数はセルの値しか決められないのだ。
もちろんエクセルVBAで出来ます。
図だけ挙げて、図(シートデータ)の説明しないで質問するのはだめ。それに本件はコードを作ってくださいの、丸投げ。
A-F列はどういう意味か。どう使うのかを書かないと。
MkDirを使うとき、引数の文字列を、プログラムで作ればしまい。
フォルダが深くなるごとに、¥とフォルダ文字列を &(演算子)で追加すれば良い。
自分でどう結合して行ったら良いか、データを作ったのは質問者なのだから、文章ででも書き出して考えたら。
それが出来れば、本件は後はコード化するのは簡単とおもう。

この回答への補足

説明がわかりにくくて申し訳ありません。
フォルダ作成をするためにG列を作成したいのです(それができればフォルダ作成のフリーソフト等でしようと思っています)。このG列は私が手作業で作成しました。関数で考えたのですがどうもわかりません。私はVB初心者なのでもし少しヒントだけでもお教えいただけませんでしょうか。
実データからそのまま取ったので歯抜けになっているところもありわかりにくいのですが、例えば1行目はA1のセルが「A」でその横の列は全部空白なのでF1のセルの「あ」がそのままG1セルになります。2行目はA2のセルが「A」B2のセルが「1」なのでF1の「あ」とF2の「い」を「\」で結合したものをG2のセルに書き出しています。ただB4のセルのように「1」から始まるわけではなく歯抜けの場合もあります。必ずしも「\」で結合する必要もなくセルで区切れればタブの文字コード置換等で「\」にしてもかまいません。

補足日時:2010/11/08 01:07
    • good
    • 0
この回答へのお礼

ありがとうございました。返事が遅くなりまして申し訳ありません。

お礼日時:2010/11/09 23:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!