Почему я не могу определить свою книгу как объект?
Почему я не могу определить книгу как из этих способов? (У меня есть бит бит там только для быстрого теста.) Как его исправить?
В результате получается "Compile Error: Type Mismatch"
Sub Setwbk()
Dim wbk As Workbook
Set wbk = "F:\Quarterly Reports\2012 Reports\New Reports\ _
Master Benchmark Data Sheet.xlsx"
Range("A2") = wbk.Name
End Sub
И это создает "Runtime Error '91': Object variable or with block variable not set"
Sub Setwbk()
Dim wbk As Workbook
wbk = "F:\Quarterly Reports\2012 Reports\New Reports\ _
Master Benchmark Data Sheet.xlsx"
Range("A2") = wbk.Name
End Sub
Что мне здесь не хватает? Я целый месяц пробивался в VBA, получился довольно изощренным, но это меня насторожило. Мне не хватает чего-то элементарного.
Я просто хочу определить книгу, поэтому мне не нужно вводить ее полностью!
Ответы
Ответ 1
Это действительно разумный вопрос. Вот ответ от Excel 2010:
"Объект Workbook является членом коллекции Workbooks. Коллекция Workbooks содержит все объекты рабочей книги, которые в настоящее время открываются в Microsoft Excel."
Итак, поскольку эта книга не открыта - по крайней мере, я предполагаю, что это не так - она не может быть установлена как объект рабочей книги. Если он был открыт, вы просто установите его так:
Set wbk = workbooks("Master Benchmark Data Sheet.xlsx")
Ответ 2
Вам нужно будет открыть книгу, чтобы ссылаться на нее.
Sub Setwbk()
Dim wbk As Workbook
Set wbk = Workbooks.Open("F:\Quarterly Reports\2012 Reports\New Reports\ _
Master Benchmark Data Sheet.xlsx")
End Sub
* Следуйте Doug answer, если книга уже открыта. Чтобы сделать этот ответ максимально полным, я включаю свой комментарий к его ответу:
Почему я должен "установить" его?
Set
заключается в том, как VBA назначает переменные объекта. Поскольку a Range
и a Workbook
/Worksheet
являются объектами, вы должны использовать с ними Set
.