Я получаю ошибку компиляции при создании нового экземпляра объекта файловой системы

Когда я пытаюсь запустить этот код, я получаю такую ​​​​ошибку

Ошибка компиляции
Не удается найти проект или библиотеку.

Public FSO As New FileSystemObject

Sub DiskSpace()
    Dim drv As Drive
    Dim Space As Double
    Set drv = FSO.GetDrive("C:") ' Creating the the Drive object

    Space = drv.FreeSpace
    Space = Space / 1073741824 'converting bytes to GB
    Space = WorksheetFunction.Round(Space, 2) ' Rounding

    MsgBox "C: has free space = " & Space & " GB"
End Sub

person coderH    schedule 04.12.2018    source источник
comment
Вы установили ссылку на Microsoft Scripting Runtime?   -  person Excel Developers    schedule 04.12.2018
comment
@ExcelDevelopers Невозможность установить ссылку приведет к другой ошибке. Попытайся.   -  person Ron Rosenfeld    schedule 04.12.2018
comment
Большое спасибо всем за быстрые ответы. Я смог решить проблему. Мне пришлось изменить 2 строки следующим образом. Но не могу понять почему. Public FSO As New scripting.FileSystemObject Dim drv As scripting.Drive   -  person coderH    schedule 04.12.2018
comment
@ Рон Розенфельд. Я считаю, что разработчики Excel правы. Я создал новую книгу и импортировал код coderH. Как сообщается, это не удалось. Затем я установил ссылку на Microsoft Scripting Runtime, и код отобразил окно сообщения с указанием свободного места на диске C:   -  person Tony Dallimore    schedule 04.12.2018
comment
scripting. сообщает компилятору, где искать определения FileSystemObject и Drive. Это позволяет избежать необходимости ссылки.   -  person Tony Dallimore    schedule 04.12.2018
comment
@TonyDallimore Интересно. Когда я скопировал код coderH и запустил его, не устанавливая ссылку на среду выполнения сценариев Microsoft, я получаю сообщение об ошибке компиляции, определяемый пользователем тип не определен   -  person Ron Rosenfeld    schedule 04.12.2018
comment
@TonyDallimore Но у меня возникла ошибка, когда я установил ссылку. Это может быть ошибка, связанная с версией Excel. Я использую одноязычную версию Excel 2013.   -  person coderH    schedule 04.12.2018
comment
@RonRosenfeld Странно. У меня есть определяемый пользователем тип, который не был определен в прошлом, когда я забыл установить ссылку. Я не помню, чтобы мне сказали, что это ошибка компиляции. Почему мы должны получать разные сообщения об одной и той же ошибке? Между нашими установками должна быть какая-то другая тонкая разница. Не уверен, что я достаточно заинтересован, чтобы исследовать.   -  person Tony Dallimore    schedule 04.12.2018


Ответы (2)


Я предполагаю, что вы установили ссылку на Microsoft Scripting Runtime, в противном случае ошибка будет выглядеть примерно так: Тип, определенный пользователем, не определен.

В редакторе VBA перейдите в Инструменты/Ссылки и найдите ссылку с отсутствующим. Снимите этот флажок и посмотрите, работает ли он.

person Ron Rosenfeld    schedule 04.12.2018
comment
Большое спасибо за ответ. Я смог решить проблему. Мне пришлось изменить 2 строки следующим образом. Но не могу понять почему. Public FSO As New scripting.FileSystemObject Dim drv As scripting.Drive - person coderH; 04.12.2018
comment
Вы знаете, почему мне нужно добавить скрипты в начале? - person coderH; 04.12.2018
comment
@coderH Если у вас нет набора ссылок, ваш код не понимает Drive. С референсом он вам не нужен. Были ли у вас какие-либо отсутствующие ссылки в списке? - person Ron Rosenfeld; 04.12.2018
comment
Да, у меня отсутствует одна ссылка на веб-компоненты Microsoft Office 11.0. - person coderH; 04.12.2018
comment
Это не проверено? - person Ron Rosenfeld; 04.12.2018
comment
Это проверено. Я пытался снять галочку. Но не позволил. Я получаю следующее сообщение. Невозможно удалить элемент управления или ссылку: используется Однако я использовал тот же код в новой книге. Тогда это сработало. - person coderH; 04.12.2018
comment
@coderH Вероятно, ссылка либо не отсутствует, либо не проверена в новой книге. Возможно, вы сможете удалить ссылку в существующем файле с помощью процедуры, показанной в этом ответ. Вы должны иметь возможность добавить его обратно, перейдя к правильному файлу DLL. - person Ron Rosenfeld; 04.12.2018

Вам нужно установить ссылку на Microsoft Scripting Runtime. В VBE нажмите «Инструменты», «Ссылки», затем прокрутите вниз до «Среда выполнения сценариев Microsoft» и установите флажок рядом с ним.

person Excel Developers    schedule 04.12.2018
comment
Спасибо за ответ. Я уже сделал это. Но это не было причиной. - person coderH; 04.12.2018