Если вы добавите ссылку на Microsoft Scripting Runtime (VBE> Инструменты> Ссылки ...), то включите код «Раннее связывание», который вы в настоящее время закомментировали, и ваш код будет работать.
Чтобы установить ссылку в редакторе Visual Basic (VBE), перейдите в меню «Инструменты» и выберите функцию «Ссылки».
![enter image description here](https://i.stack.imgur.com/G7tV1.png)
Затем в открывшемся диалоговом окне «Ссылки» прокрутите, пока не найдете Microsoft Run Scripting Runtime, отметьте его и нажмите кнопку «ОК».
![enter image description here](https://i.stack.imgur.com/RkCtg.png)
В текущемС помощью кода удалите метки комментариев в двух строках, помеченных как «Раннее связывание», и примените метки комментариев в двух строках, помеченных как «Позднее связывание».
Ниже приведено изменение исходного ответа, поскольку на основе комментариев, у вас по-прежнему возникают проблемы с использованием кода FSO (объект файловой системы) в вашей системе.
Вместо использования FSO следующая подпрограмма VBA определит, существует ли указанный каталог или файл.,Подпрограмма называется «DoesItExist», и я включил пример подпрограммы, которая демонстрирует, как вызывать процедуру «DoesItExist».
Sub MyTestRoutine()
'this first example tests if a specific file exists
'including a "False" setting for the dirOnly variable is optional
If DoesItExist("C:\Users\<userID>\Documents\Test\Mydoc.docx") Then
Debug.Print "File Exists"
Else
Debug.Print "File Does Not Exist"
End If
'the next example tests if a directory exists,
'the "True" setting for the dirOnly variable is required for directories
If DoesItExist("C:\Users\<userID>\Documents\Test", True) Then
Debug.Print "Directory Exists"
Else
Debug.Print "Directory Does Not Exist"
End If
End Sub
Public Function DoesItExist(ByRef pathName As String, Optional ByRef dirOnly As Boolean) As Boolean
'this routine checks if a file or folder exists on the system
'it runs on either a Windows based version of Office or a Mac version
'if Mac Office then only for the Office 365, 2016, 2019, or later)
Select Case dirOnly
Case True
If Dir(pathName, vbDirectory) = vbNullString Then
DoesItExist = False
Else
DoesItExist = True
End If
Case False
If Dir(pathName, vbNormal) = vbNullString Then
DoesItExist = False
Else
DoesItExist = True
End If
End Select
End Function