質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

1回答

1929閲覧

ファイルの複数階層作成

pulim

総合スコア15

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/06/29 08:53

指定ファイルに複数階層のファルダ―を作成したいと思い、以下のコードを書きました。
ですが、" fs.CreateFolder (s)"でパスが見つかりませんとのエラーが出てきてしまい、
修正箇所がわかりません。
どなたかご指摘ください。

Sub ファイル() Dim i As Long, cmax As Long, x As Long, z As Long, cnt As Long, j As Long, k As Long Dim ws1 As Worksheet Dim str As String, url As String Dim s As String, s1 As String Dim n1 As Long Dim fs As FileSystemObject Set fs = New Scripting.FileSystemObject Set ws1 = Sheets(1) cmax = ws1.Range("A65536").End(xlUp).Row cnt = ws1.Range("IV4").End(xlToLeft).Column '[1] セルB2にURLが記載されているかチェック If ws1.Range("B2").Value = "" Then MsgBox "セルB2に「作成先のフォルダURL」を入力して下さい" ws1.Range("B2").Activate Exit Sub End If url = ws1.Range("B2").Value '[2] 同じ行に複数回記入されていないことを確認 For i = 5 To cmax x = 0 For j = 0 To cnt - 2 If ws1.Cells(i, 2).Offset(0, j).Value <> "" Then x = x + 1 End If Next If x > 1 Then z = z + 1 End If Next '[3] 同じ行に複数回記入されていた場合、処理を止める If z > 0 Then MsgBox 入力情報を見直してください Exit Sub End If '[4] 階層別にフォルダを作成する For j = 0 To cnt - 2 For i = 5 To cmax If ws1.Cells(i, 2).Offset(0, j).Value <> "" Then s1 = ws1.Cells(i, 2).Offset(0, j).Value For k = 0 To j If k - j = 0 Then Exit For End If n1 = ws1.Cells(i, 2).Offset(0, j - k - 1).End(xlUp).Row s1 = ws1.Cells(i, 2).Offset(0, j - k - 1).Value & "\" & s1 Next s = url & " \" & s1 fs.CreateFolder (s) End If Next Next Set fs = Nothing End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YT0014

2020/06/29 10:23

変数sの中身をコンソールなどに出力するようにして、エラーが発生した時の 値を確認してください。
guest

回答1

0

最下層の親フォルダがないとCreateFolderで「パスが見つかりません」が出ます。
例えば「C:\aaa\bbb\ccc」とCreateFolderしようとして
Cにaaaまたはaaaの中にbbbがないとダメです。

親フォルダを作ってください。

投稿2020/06/29 13:23

sousuke

総合スコア3830

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問