Решил я написать программу для сравнения двух папок и если в одной из них не достаёт вложенных папок или файлов, имеющихся в другой, то она дополняется ими соответственно. В конечном итоге получится что-то вроде инструмента проводника "Портфель" в ОС Windows, но с расширенными возможностями.
Реализовывать я начал так:
Код следующий:
Прошу обратить внимание на третью снизу строку: если в ней заменить константу 1 на переменную i то интерпретатор выдаёт ошибку (код 800А01А8, описание: Требуется объект: "). Описание почему-то заканчивается двойной кавычкой, поэтому не понятно какой-такой объект требуется... Если я подставляю числовые константы - как по маслу, а стоит заставить интерпритатор перебирать массив - ошибка! Почему так?
Реализовывать я начал так:
- создаём массив объектов всех вложенных папок и файлов, содержащихся в папке № 1;
- создаём массив объектов всех вложенных папок и файлов, содержащихся в папке № 2;
- сравниваем оба этих массива и дополняем недостоющими элементами соответственно.
Код следующий:
VB.NET / VBA:
dim i, maxI
dim objectsBufer(1000)
dim put
i = 1
allFoldersBufer("C:\папка1")
function allFoldersBufer(allDir)
set f = createObject("scripting.fileSystemObject").getFolder(allDir)
set subF = f.subFolders
for each folder in subF
set objectsBufer(i) = folder
i = i + 1
allFoldersBufer(allDir & "\" & folder.name)
next
end function
maxI = i
put = "C:\Результат работы.txt"
set fso = createObject("scripting.fileSystemObject")
if fso.fileExists(put) then
set file = fso.getFile(put)
set textSte = file.openAsTextStream(2, -1)
else
set textSte = fso.createTextFile(put)
end if
i = 1
msgBox "i = " & i & " maxI = " & maxI
for i = 1 to maxI
textSte.writeLine objectsBufer(1).path & " Имя папки: " & objectsBufer(1).name
next
textSte.close
Прошу обратить внимание на третью снизу строку: если в ней заменить константу 1 на переменную i то интерпретатор выдаёт ошибку (код 800А01А8, описание: Требуется объект: "). Описание почему-то заканчивается двойной кавычкой, поэтому не понятно какой-такой объект требуется... Если я подставляю числовые константы - как по маслу, а стоит заставить интерпритатор перебирать массив - ошибка! Почему так?
Последнее редактирование модератором: