Задача: создать папку любой вложенности используя vba.
Способ решения:
Sub СоздатьПапку(ПутьКПапке As String)
' создает папку любой вложенности
Dim FSO As Object
Dim ПройденныйПуть As String ' уже существующий путь
Dim ШагВперед As String ' добавляемый путь
Set FSO = CreateObject("Scripting.FileSystemObject")
ПройденныйПуть = ""
' добавляю в конец строки символ “\”, если его там не было
If Right(ПутьКПапке, 1) <> "\" Then ПутьКПапке = ПутьКПапке & "\"
' если папка существует, то завершаю процедуру
If FSO.FolderExists(ПутьКПапке) Then
Exit Sub
Else
' иначе пошагово проверяю существование части пути и добавляю несуществующую часть пути
Do Until InStr(ПутьКПапке, "\") = InStrRev(ПутьКПапке, "\")
ПройденныйПуть = ПройденныйПуть & Left(ПутьКПапке, InStr(ПутьКПапке, "\"))
ПутьКПапке = Right(ПутьКПапке, Len(ПутьКПапке) - InStr(ПутьКПапке, "\"))
ШагВперед = Left(ПутьКПапке, InStr(ПутьКПапке, "\") - 1)
If Not (FSO.FolderExists(ПройденныйПуть & ШагВперед)) Then
FSO.CreateFolder (ПройденныйПуть & ШагВперед)
End If
Loop
End If
End Sub
Примечания:
Способ решения:
Sub СоздатьПапку(ПутьКПапке As String)
' создает папку любой вложенности
Dim FSO As Object
Dim ПройденныйПуть As String ' уже существующий путь
Dim ШагВперед As String ' добавляемый путь
Set FSO = CreateObject("Scripting.FileSystemObject")
ПройденныйПуть = ""
' добавляю в конец строки символ “\”, если его там не было
If Right(ПутьКПапке, 1) <> "\" Then ПутьКПапке = ПутьКПапке & "\"
' если папка существует, то завершаю процедуру
If FSO.FolderExists(ПутьКПапке) Then
Exit Sub
Else
' иначе пошагово проверяю существование части пути и добавляю несуществующую часть пути
Do Until InStr(ПутьКПапке, "\") = InStrRev(ПутьКПапке, "\")
ПройденныйПуть = ПройденныйПуть & Left(ПутьКПапке, InStr(ПутьКПапке, "\"))
ПутьКПапке = Right(ПутьКПапке, Len(ПутьКПапке) - InStr(ПутьКПапке, "\"))
ШагВперед = Left(ПутьКПапке, InStr(ПутьКПапке, "\") - 1)
If Not (FSO.FolderExists(ПройденныйПуть & ШагВперед)) Then
FSO.CreateFolder (ПройденныйПуть & ШагВперед)
End If
Loop
End If
End Sub
Примечания:
- терминология, используемая здесь далека от идеала
- процедура позволяет создать, например, папку “c:\БлаБлаБла\СоздаваемаяПапка\Вложеная папка\Конечная папка” при отсутствии папки “c:\БлаБлаБла”
Комментариев нет:
Отправить комментарий