Dir
возвращает имя соответствующего файла, каталога или папки.
Вызов Dir
должен быть в порядке, но в вашем случае это приводит к ошибке.
У вас также не реализовано ни одного цикла для итерации всех доступных исходных файлов.
Использование FileSystemObject
является одним из вариантов.
Чтобы использовать FileSystemObject
, выберите пункт меню Project , а затем пункт меню References ... .
Откроется диалоговое окно References .
Установите флажок рядом со ссылкой " Microsoft Scripting Runtime " и нажмите OK .
Теперь вы можете объявить переменную как FileSystemObject
. Кроме того, вы получаете доступ к другим объектам, таким как File
, Folder
, Files
и т. Д.
Использование FileSystemObject
предоставляет вам доступ к широкому спектру функций.
Приведенный ниже код демонстрирует, как получить количество файлов, которые не существуют в месте назначения и будут скопированы, используя FileSystemObject
.
Private Sub cmdCopy_Click()
Dim fso As New FileSystemObject
Dim sourceFolder As Folder
Dim sourceFile As File
Dim destinationFolder As Folder
Dim filesToBeCopied As Integer
Set sourceFolder = fso.GetFolder("C:\-- Temp --\Source")
Set destinationFolder = fso.GetFolder("C:\-- Temp --\Destination")
filesToBeCopied = 0
' Iterrate through each file in the source folder.
For Each sourceFile In sourceFolder.Files
' Check if the source file exists in the destination folder
If Not (fso.FileExists(destinationFolder + "\" + sourceFile.Name)) Then
filesToBeCopied = filesToBeCopied + 1
End If
Next
End Sub
Я протестировал приведенный выше код, и он правильно увеличивает количество файлов ToBeCopied до ожидаемого числа.