Этот пример никогда не работал, он последовательно выдает «ActiveX не может создать объект», потому что вы просто не можете создать объект Excel.Sheet
- Excel, во-первых, даже не определяет какой-либо класс Sheet
, а во-вторых. . * edit: Я исправлен, там есть Excel.Sheet
ключ реестра ProdID и CreateObject("Excel.Sheet")
, похоже, "работает", но мои эксперименты закончились тем, что Excel загорелся, не рекомендую .
Worksheet
объекты (обычно?) живут в коллекции объектов Sheets
, которая принадлежит объекту Workbook
, который сам живет в коллекции объектов Workbooks
, который принадлежит и управляется объектом Application
- и , который является классом, который вы можете создать с помощью CreateObject
- для создания Workbook
объекта вам необходимо использовать коллекцию Workbooks
объектной модели класс (т. е. книга не может существовать в воздухе, она должна быть дочерним объектом родительской коллекции книг, которая сама принадлежит объекту Application
):
With CreateObject("Excel.Application")
With .Workbooks.Add
'...
.Close
End With
.Quit
End With
Однако, если ваш код размещен в Excel, библиотека Excel уже Ссылка на dy: использование CreateObject
для получения типа, который компилятор уже знает, как решить, - это большая работа впустую (почему go ищет строку ProgID в реестре, когда тип, который вы ищете - буквально тут же ). Избегайте кодирования против Object
, когда у вас есть доступ во время компиляции к соответствующим типам.
Когда вы находитесь в Excel и вам нужно создать новый объект Excel.Application
, гораздо более прямой способ сделать это с ключевым словом New
:
With New Excel.Application
With .Workbooks.Add
'...
.Close
End With
.Quit
End With