2015-06-24 14 views
4

Я хотел бы создать каталог и подкаталог с помощью следующего кода:FileSystemObject.CreateFolder создать каталог и подкаталоги

Public fso As Scripting.FileSystemObject 
Set fso = New Scripting.FileSystemObject 
fso.CreateFolder ("C:\Users\<my_username>\DataEntry\logs") 

Я пытаюсь создать вложенные каталоги. В этом случае каталог DataEntry не существует, так что по сути я хотел бы создать 2 директорию, DataEntry\logs под C:\Users\<username>

Если я вхожу командную строку, я могу создать этот каталог с mkdir без каких-либо проблем. Однако, я просто не могу получить VBA создать эту папку, и я получаю:

Run-time error '76': 

Path not found       

Я использую Excel VBA 2007/2010

+0

Попробуйте только с помощью (http://www.techonthenet.com/excel/formulas/mkdir.php) – nicholas79171

+0

@ nicholas79171 I [ 'команду mkDir'.] Я тоже пробовал это, но это не работает. Думаю, я могу что-то сказать. Похоже, VBA не может создавать вложенные подкаталоги? Я обновил свой вопрос – czchlong

+0

Создан ли первый каталог? – nicholas79171

ответ

5

Необходимо создать каждую папку по одному. Вы можете использовать код, как это сделать так:

Sub tgr() 

    Dim strFolderPath As String 
    Dim strBuildPath As String 
    Dim varFolder As Variant 

    strFolderPath = "C:\Users\<my_username>\DataEntry\logs" 

    If Right(strFolderPath, 1) = "\" Then strFolderPath = Left(strFolderPath, Len(strFolderPath) - 1) 
    For Each varFolder In Split(strFolderPath, "\") 
     If Len(strBuildPath) = 0 Then 
      strBuildPath = varFolder & "\" 
     Else 
      strBuildPath = strBuildPath & varFolder & "\" 
     End If 
     If Len(Dir(strBuildPath, vbDirectory)) = 0 Then MkDir strBuildPath 
    Next varFolder 

    'The full folder path has been created regardless of nested subdirectories 
    'Continue with your code here 

End Sub 
+0

Должен сказать, что я удивлен, что VBA недостаточно умен, чтобы создать родительские каталоги самостоятельно ... – czchlong

Смежные вопросы