2017-02-08 2 views
3

작성하려는 디렉토리 계층을 정의하는 A 열에 폴더 위치 목록이 있습니다 (예 : "C : \ topFolder \ nextFolder \ lastFolder \). 이 코드는 오류없이 실행되지만 폴더가 생성되지 않습니다. 내가 잘못 여기서 뭐하는 거지?EXCEL VBA - 디렉토리 및 폴더가없는 경우 디렉토리 및 폴더 만들기

Sub newDestination() 
    Dim Path As Variant 
    Dim folderLevel As Variant 

    For Each Path In Sheet11.Range("A:A") 
     For Each folderLevel In Split(Path.Value, "\") 
      folderLevel = folderLevel & "\" 
      If Len(Dir(folderLevel, vbDirectory)) = 0 Then 
       MkDir folderLevel 
      End If 
     Next folderLevel 
    Next Path 

End Sub 
+0

당신은 그 값이 무엇을보고 folderLevel = folderLevel & "\"다음을 Debug.Print (folderLevel)를 넣을 수 있습니다 :

이 당신이이 작업을 수행 할 필요가 어떻게? –

+0

'Path'는 Excel VBA 빌트인 메소드입니다.'Path' 변수 선언에 어떤 에러도 없었습니까? – Barney

+0

@Barney'Path'는 Excel-VBA의 몇 가지 개체에 대해서는 속성에 내장되어 있지만 내장 메서드에는 포함되어 있지 않습니다. 그럼에도 불구하고 변수 이름으로는 아주 좋은 선택은 아닙니다. – cyboashu

답변

3

당신은 고아 폴더를 만들 수 있습니다. MKDIR "ABC \"통합 문서의 디렉토리에 ABC라는 이름의 폴더를 생성합니다. 경우 통합 문서가 저장되지 않은 경우이 폴더는 MyDocuments에 만들어집니다 (Excel의 구성에 따라 가장 좋아함).

폴더를 만들려면 전체 qalified 경로를 전달해야합니다 "C : \ Temp \ abc \"와 같은 원하는 위치에서 r을 입력하십시오.

코드에서 for 루프를 실행하고 폴더 이름을 전달하는 방법에 문제가 있습니다.

Sub test() 

    Dim strPath As String 
    Dim lCtr  As Long 

    strPath = "C:\Temp\Parent\Child\ChildsChild" 

    arrpath = Split(strPath, "\") 
    strPath = arrpath(LBound(arrpath)) & "\" 

    For lCtr = LBound(arrpath) + 1 To UBound(arrpath) 
     strPath = strPath & arrpath(lCtr) & "\"    
     If Dir(strPath, vbDirectory) = "" Then 
      MkDir strPath 
     End If 
    Next 

End Sub 
+0

잘 작동합니다. 고맙습니다! – minnow1

관련 문제