以下のようなコードを作成しており、コメントの二重ループのコードを加えるまではエラーがなく動作をしておりました。
そこでeachPath
の中にdeepPath
をDo While
による二重ループが必要となり実行すると
eachPath = Dir()'ここです
の箇所で以下のエラーが発生します。
実行エラー5 プロージャの呼び出しまたは引数が不正です
Dirの中で異なるDir()を実行してもそれ自体がエラーの原因となる認識はないのですが、どなたかご助言をいただけますでしょうか?
宜しくお願い申し上げます。
vba
1Sub getFolderStruct() 2Dim i As Long 3Dim YYYYMM As String 4Dim fileName As String 5Dim Dic As Object 6Dim buf As String 7Dim itemsdic As Variant 8Dim eachPath As String 9Dim deepPath As String 10Dim hypLink As Hyperlink 11Dim adr As String 12Dim deepAdr As String 13 14 15YYYYMM = Cells(6, 4).Value 16 17If YYYYMM = "" Then 18 MsgBox "YYYYMMに出力したいフォルダパスを入力してね~" & vbCrLf & "「処理を終了します」" 19 Exit Sub 20End If 21 22If Cells(4, 6).Value <> "" Then 23 MsgBox "DebugAreaをクリーンにしてください" & vbCrLf & "「処理を終了します」" 24 Exit Sub 25End If 26 27fileName = Dir(ThisWorkbook.Path & "\" & YYYYMM & "*", vbDirectory) 28 29 30Set Dic = CreateObject("Scripting.Dictionary") 31 32Do While fileName <> "" 33 If fileName <> "." And fileName <> ".." Then 34 Dic.Add fileName, fileName 35 End If 36 fileName = Dir() 37Loop 38 39i = 4 40 For Each itemsdic In Dic 41 42 eachPath = Dir(ThisWorkbook.Path & "\" & YYYYMM & "\" & itemsdic & "*", vbDirectory) 43 Do While eachPath <> "" 44 adr = ThisWorkbook.Path & "\" & YYYYMM & "\" & itemsdic & "\" & eachPath 45 46 If eachPath <> "." And eachPath <> ".." And GetAttr(adr) = 16 And eachPath = "ABC" Then 47 Cells(i, 6).Value = itemsdic 48 Set hypLink = ActiveSheet.Cells(i, 7).Hyperlinks.Add( _ 49 Anchor:=Cells(i, 7), _ 50 Address:=adr, _ 51 TextToDisplay:=eachPath) 52 deepPath = Dir(ThisWorkbook.Path & "\" & YYYYMM & "\" & itemsdic & "\ABC*", vbDirectory) 53 54 Do While deepPath <> "" '二重ループ 55 deepAdr = ThisWorkbook.Path & "\" & YYYYMM & "\" & itemsdic & "\ABC" & "\" & deepPath 56 If deepPath <> "." And deepPath <> ".." And GetAttr(deepAdr) = 16 Then 57 Set hypLink = ActiveSheet.Cells(i, 8).Hyperlinks.Add( _ 58 Anchor:=Cells(i, 8), _ 59 Address:=deepAdr, _ 60 TextToDisplay:=deepPath) 61 i = i + 1 62 End If 63 64 deepPath = Dir() 65 66 Loop'二重ループ 67 68 69 ElseIf eachPath <> "." And eachPath <> ".." And GetAttr(adr) = 16 And eachPath <> "ABC" Then 70 Cells(i, 6).Value = itemsdic 71 Set hypLink = ActiveSheet.Cells(i, 7).Hyperlinks.Add( _ 72 Anchor:=Cells(i, 7), _ 73 Address:=adr, _ 74 TextToDisplay:=eachPath) 75 76 i = i + 1 77 End If 78 eachPath = Dir() 'ここです 79 Loop 80 Next 81 82End Sub
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/02 07:27