Преобразование из типа 'String' в тип 'String' недопустимо
Я нахожусь в процессе портирования старого дополнения к Excel, написанного на VBA, на VB .NET. Надстройка Excel взаимодействует с рядом внешних объектов com. Код Сорта выглядит так:
Dim hurr as Object
Dim durr as String
hurr = CreateObject("COM Object")
durr = hurr.getString
Я пытаюсь прочитать строку из COM-объекта и получить ее в durr для дальнейшего использования в моей программе.
Эта вторая строка приводит к исключению, опубликованному выше. Если я попытаюсь использовать приведение с CStr/CType, я получу то же исключение. Окно просмотра Visual Studio сообщает о типе hurr.getString как "System.__ComObject", тогда как окно просмотра VBA сообщает о типе "Variant/Object/String". Microsoft.VisualBasic.Information.TypeName(hurr.getString) говорит, что тип является "String". Есть идеи, как мне это сделать?
Спасибо!
1 ответ
Это смешно, но я решил опубликовать ответ здесь для полноты. Решением было добавить пару скобок в конец hurr.getString
поэтому рабочий код выглядит так:
Dim hurr as Object
Dim durr as String
hurr = CreateObject("COM Object")
durr = hurr.getString()
Приведенный выше код дал мне исключение приведения и по какой-то причине для работы здесь нужны скобки. Я просто добавлю, что работа с поздними связывающими com-объектами ужасна и ее следует избегать любой ценой.