Почему с помощью DirectCast присваивается объекты Excel

Я борюсь с пониманием следующего кода

Dim _xlsSheet As Excel.Worksheet = DirectCast(xlworkbook.Worksheets(Name), Excel.Worksheet)

или же

xlworkbook = DirectCast(xlApp.ActiveWorkbook, Excel.Workbook)

Все примеры, с которыми я работаю, касаются Excel.Interop я вижу повсеместное использование DirectCast. то, что я не понимаю, это то, почему мы должны использовать DirectCast здесь. Если я заявляю dim xlworkbook as excel.workbook использовать прямую трансляцию вместо назначения рабочей книги?

1 ответ

Решение

xlworkbook.Worksheets() метод возвращает Excel.Sheets коллекция. Коллекции (обычно) возвращают предметы типа Objectи как таковые, они должны быть приведены к типу, который вы ожидаете.

Для xlworkbook = DirectCast(xlApp.ActiveWorkbook, Excel.Workbook)Похоже, это DirectCast может не понадобиться, если xlApp не был создан без ссылки с использованием CreateObject("Excel.Application"), который бы создал объект вместо.

Другие вопросы по тегам