Преобразование из типа '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-объектами ужасна и ее следует избегать любой ценой.

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