Два предложения
1) Сначала откройте файл с отключенными макросами.А затем проверьте VBA Editor |Инструменты |Ссылки .Проверьте наличие недостающих ссылок, а затем дайте нам знать, что они.Мы возьмем его оттуда.
2) Для ссылок типа " Библиотека объектов времени выполнения сценариев Microsoft " Я никогда не использую Раннее связывание.Раннее связывание является основной причиной подобных ошибок.Просто к сведению: Раннее связывание создает ссылки заранее через VBA Editor |Инструменты |Ссылки .Я бы порекомендовал изменить ваш код на Позднее связывание.Вот 2 примера того же кода с использованием « библиотеки объектов времени выполнения сценариев Microsoft » с ранним и поздним связыванием
ПРИМЕР РАННЕГО СВЯЗАНИЯ
'~~> Set Reference to "Microsoft Scripting Runtime Object Library"
Sub EBExample()
Dim FSO As Scripting.FileSystemObject
Dim SourceFolder As Scripting.Folder
Dim FileItem As Scripting.File
Set FSO = New Scripting.FileSystemObject
Set SourceFolder = FSO.GetFolder(SourceFolderName)
For Each FileItem In SourceFolder.Files
'~~> You code
Next FileItem
End Sub
ПРИМЕР позднего связывания
'~~> This doesn't need a reference
Sub LBExample()
Dim FSO As Object, SourceFolder As Object, FileItem As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = FSO.GetFolder(SourceFolderName)
For Each FileItem In SourceFolder.Files
'~~> You code
Next FileItem
End Sub
Что касается меня, я использую раннее связывание, чтобы использовать преимущества Intellisense, но затем преобразую его в позднее связывание, чтобы избежать специфичного для версии кода перед распространением кода.Таким образом, код всегда работает.:)
IMP ПРИМЕЧАНИЕ. Позднее связывание завершается неудачно в тех случаях, когда на целевом компьютере не зарегистрированы соответствующие dll.
РЕКОМЕНДУЕМАЯ ССЫЛКА :
Тема: Использование раннего и позднего связывания в Automation
Ссылка : http://support.microsoft.com/kb/245115
Надеюсь, это поможет
Sid