
No.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
No.5
- 回答日時:
お急ぎの様ですが、アドバイスです。
>フォルダを一括で作成したいのです(階層がある分)。
>実際ファイル名はまだ長く、データの行もかなりあります。
実際に何故、この機能が必要になったのでしょうか?
回答者の方もコードを考えることは出来ても実際に業務で使用した事例はないと思います。
さてコードを考える前に
1、すでに指定したフォルダがあった場合、その中にファイルが既にあった場合
--初期化する必要があるのかどうか(全てを削除するコード)
或いは
--そのまま既にあるフォルダを使用し行くのか(既にフォルダーの有無を判断するコード)
2、仮に出来たとして フォルダーとファイルだらけのPCをどうやって管理するのか
--別途ファイル管理のシステムも必要になる。
と云った疑問を感じます。
多分 お金を払ってプロに相談したとしても、同じような質問が来るはずです。
一般的には、データベースとして情報を管理して、必要な部分が出力される機能ではダメですか?
と云われると思います。
この回答への補足
説明がわかりにくくて申し訳ありません。
>実際に何故、この機能が必要になったのでしょうか?
このファイルの目次(?)データからフォルダを作成してそこに引越し(手作業)の作業が生じたのです。
ローカルのPCでまずフォルダを作成し、それをファイルを置くサーバにコピーしようと思っています。
G列には列挙されていません(私が手作業で作成しました)。
フォルダ作成をするためにG列を作成したいのです(それができればフォルダ作成のフリーソフト等でしようと思っています)。関数で考えたのですがどうもわかりません。私はVB初心者なのでもし少しヒントだけでもお教えいただけませんでしょうか。
実データからそのまま取ったので歯抜けになっているところもありわかりにくいのですが、例えば1行目はA1のセルが「A」でその横の列は全部空白なのでF1のセルの「あ」がそのままG1セルになります。2行目はA2のセルが「A」B2のセルが「1」なのでF1の「あ」とF2の「い」を「\」で結合したものをG2のセルに書き出しています。ただB4のセルのように「1」から始まるわけではなく歯抜けの場合もあります。必ずしも「\」で結合する必要もなくセルで区切れればタブの文字コード置換等で「\」にしてもかまいません。
No.4
- 回答日時:
この質問は何回か見ましたが、
ようはG列の文字列は
”どうやってそのように作られるのか”
その条件を提示しないとダメでしょう。
質問の画像には既にG列には値がありますけど、
本来はないハズなのでは?
そこの所が抜けているから希望する回答がつかず、
何回も繰り返しているように見えます。
この回答への補足
説明がわかりにくくて申し訳ありません。
G列には列挙されていません(私が手作業で作成しました)。
フォルダ作成をするためにG列を作成したいのです(それができればフォルダ作成のフリーソフト等でしようと思っています)。関数で考えたのですがどうもわかりません。私はVB初心者なのでもし少しヒントだけでもお教えいただけませんでしょうか。
実データからそのまま取ったので歯抜けになっているところもありわかりにくいのですが、例えば1行目はA1のセルが「A」でその横の列は全部空白なのでF1のセルの「あ」がそのままG1セルになります。2行目はA2のセルが「A」B2のセルが「1」なのでF1の「あ」とF2の「い」を「\」で結合したものをG2のセルに書き出しています。ただB4のセルのように「1」から始まるわけではなく歯抜けの場合もあります。必ずしも「\」で結合する必要もなくセルで区切れればタブの文字コード置換等で「\」にしてもかまいません。
No.3
- 回答日時:
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」から始まるわけではなく歯抜けの場合もあります。必ずしも「\」で結合する必要もなくセルで区切れればタブの文字コード置換等で「\」にしてもかまいません。
No.2
- 回答日時:
mkdirでは一階層分しか作れませんから、ループ処理で一階層ずつ作成して行ってください。
この回答への補足
説明がわかりにくくて申し訳ありません。
フォルダ作成をするためにG列を作成したいのです(それができればフォルダ作成のフリーソフト等でしようと思っています)。このG列は私が手作業で作成しました。関数で考えたのですがどうもわかりません。私はVB初心者なのでもし少しヒントだけでもお教えいただけませんでしょうか。
実データからそのまま取ったので歯抜けになっているところもありわかりにくいのですが、例えば1行目はA1のセルが「A」でその横の列は全部空白なので F1のセルの「あ」がそのままG1セルになります。2行目はA2のセルが「A」B2のセルが「1」なのでF1の「あ」とF2の「い」を「\」で結合したものをG2のセルに書き出しています。ただB4のセルのように「1」から始まるわけではなく歯抜けの場合もあります。必ずしも「\」で結合する必要もなくセルで区切れればタブの文字コード置換等で「\」にしてもかまいません。
No.1
- 回答日時:
エクセルの関数でフォルダーなんて作ろう、とするのは、エクセルの関数の基礎がわかってない証拠ですよ。
エクセルの関数はセルの値しか決められないのだ。もちろんエクセルVBAで出来ます。
図だけ挙げて、図(シートデータ)の説明しないで質問するのはだめ。それに本件はコードを作ってくださいの、丸投げ。
A-F列はどういう意味か。どう使うのかを書かないと。
MkDirを使うとき、引数の文字列を、プログラムで作ればしまい。
フォルダが深くなるごとに、¥とフォルダ文字列を &(演算子)で追加すれば良い。
自分でどう結合して行ったら良いか、データを作ったのは質問者なのだから、文章ででも書き出して考えたら。
それが出来れば、本件は後はコード化するのは簡単とおもう。
この回答への補足
説明がわかりにくくて申し訳ありません。
フォルダ作成をするためにG列を作成したいのです(それができればフォルダ作成のフリーソフト等でしようと思っています)。このG列は私が手作業で作成しました。関数で考えたのですがどうもわかりません。私はVB初心者なのでもし少しヒントだけでもお教えいただけませんでしょうか。
実データからそのまま取ったので歯抜けになっているところもありわかりにくいのですが、例えば1行目はA1のセルが「A」でその横の列は全部空白なのでF1のセルの「あ」がそのままG1セルになります。2行目はA2のセルが「A」B2のセルが「1」なのでF1の「あ」とF2の「い」を「\」で結合したものをG2のセルに書き出しています。ただB4のセルのように「1」から始まるわけではなく歯抜けの場合もあります。必ずしも「\」で結合する必要もなくセルで区切れればタブの文字コード置換等で「\」にしてもかまいません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- フリーソフト フォルダ、ファイル名の一括変換について 3 2023/03/16 09:23
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Excel(エクセル) 【Excel】指定した文字列に該当する行を重複しないようにリスト 3 2022/03/30 12:27
- Excel(エクセル) ファイル一覧表を使ったファイルの移動 5 2022/08/10 15:37
- Excel(エクセル) 名前と日付が一致する箇所にフラグを立てる関数が知りたいです 4 2022/08/11 02:24
- Excel(エクセル) excel 別のフォルダから列コピーする方法 8 2022/12/17 16:24
- Visual Basic(VBA) VBプロジェクトでのフォルダ構成について 1 2023/07/22 03:49
- Visual Basic(VBA) Excel VBA 書式変更で困ってます。 オートフィルターの日付フィルターを用いて データの絞り込 2 2022/07/26 22:16
- Excel(エクセル) Excel ある複数列に数値を入力した際に、別の列に本日の日付を入力したいです 7 2023/03/01 23:31
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
IIF関数の使い方
-
Cellsのかっこの中はどっちが行...
-
Changeイベントでの複数セルの...
-
vba 2つの条件が一致したら...
-
【VBA】複数行あるカンマ区切り...
-
SpecialCells(xlCellTypeConsta...
-
VBAを使って検索したセルをコピ...
-
VBAで、離れた複数の列に対して...
-
VBA 何かしら文字が入っていたら
-
オートフィルタをマクロで作成...
-
VBAコンボボックスで選択した値...
-
データグリッドビューの一番最...
-
VBAで、特定の文字より後を削除...
-
【VBA】2つのシートの値を比較...
-
マクロについて。S列の途中から...
-
VBA 列が空白なら別のマクロへ...
-
重複データをまとめて合計を合...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
Worksheets メソッドは失敗しま...
-
vba 2つの条件が一致したら...
-
B列の最終行までA列をオート...
-
IIF関数の使い方
-
Cellsのかっこの中はどっちが行...
-
【VBA】2つのシートの値を比較...
-
VBAのFind関数で結合セルを検索...
-
URLのリンク切れをマクロを使っ...
-
文字列の結合を空白行まで実行
-
VBA 何かしら文字が入っていたら
-
VBAを使って検索したセルをコピ...
-
【Excel VBA】 B列に特定の文字...
-
VBAで指定範囲内の空白セルを左...
-
Changeイベントでの複数セルの...
-
VBAで、離れた複数の列に対して...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
rowsとcolsの意味
-
DataGridViewに空白がある場合...
おすすめ情報