На VBA в цикле открываю файлы выбираемой папки, используя функцию Dir. В этом же цикле периодически надо создавать несуществующие директории, для чего предварительно проверяю их наличие той же Dir. В результате после проверки в конце цикла, когда пытаюсь взять следующий файл, возникает ошибка, как понимаю из-а того, что вызывал функцию Dir с другими параметрами для проверки наличия директории.
Как проверить наличие директории, не нарушив последовательность выбора файлов из директории?
Вот код всей процедуры:
Код
Sub arrange_in_folders()
Dim File, Path, FileContent, region As String
Dim objFileSys As Object
Dim i, j As Integer
'выбираем папку с файлами-источниками информации
With Application.FileDialog(msoFileDialogFolderPicker)
.ButtonName = "OK"
.Title = "Выберите папку, содержащую файлы"
If .Show = 0 Then
Exit Sub
End If
Path = .SelectedItems(1)
End With
File = Dir(PathName:=Path + "\*.xml")
Set objFileSys = CreateObject("Scripting.FileSystemObject")
Do Until File = "" 'пока не закончатся файлы
FileContent = objFileSys.OpenTextFile(Path + "\" + File).ReadAll
i = InStr(1, FileContent, "<RegionId>")
j = InStr(1, FileContent, "</RegionId>")
If InStr(1, FileContent, "<RegionId>") Then
region = Mid(FileContent, i + 10, j - i - 10)
If Dir(Path + "\" + region, vbDirectory) = "" Then MkDir Path + "\" + region
End If
File = Dir
Loop
Set File = Nothing
Set Path = Nothing
Set FileContent = Nothing
End Sub
Function FExist(ByVal sPath As String) As Boolean
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
FExist = fso.FolderExists(sPath)
End Function