Я разрабатываю довольно обширную надстройку для Excel, в которой используется множество операций.Возьмите рабочую книгу, сохраните ее под новым именем, примените действия (добавьте имена, измените формулы и т. Д.).
Обычно это работает нормально, но время от времени .Net создает исключение InvalidCastException практически для любого из моих типов CT.Когда я подтверждаю ошибку и снова запускаю код (без выхода из Excel) в той же книге Excel, ошибки не возникает.InvalidCastException возникает, возможно, в 40% всех попыток, в противном случае надстройка завершается успешно.
Недавно мне пришлось конвертировать из C # в VB.Net.Я все время использую CType, например Dim interior = CType(cl.Interior, Excel.Interior)
(одно из ошибочных утверждений).Ошибка не возникает в том же месте, но во всей моей программе, также при преобразовании диапазонов, для For Each r As Excel.Range In largerRange
, а также когда я использую Object
в For Each
и CType to Excel.Range.В последнем случае я получаю объект в диапазоне, но CType to Excel.Range завершается ошибкой.Есть ли способ проверить объект на этом этапе?
Я действительно понятия не имею, почему однажды надстройка дает сбой, а другая завершается без ошибок, даже без перезагрузки Excel (или любой другой участвующей DLL).
Любая помощь будет принята с благодарностью!
PS: VS2010, .Net 3.5SP1, Excel 2007, Импорт Excel = Microsoft.Office.Interop.Excel