Преобразование из типа 'String' в тип 'String' недопустимо - PullRequest
3 голосов
/ 21 декабря 2009

Я в процессе переноса старого дополнения к 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 Ответ

1 голос
/ 21 декабря 2009

Это смешно, но я решил опубликовать ответ здесь для полноты. Решением было добавить пару скобок в конец hurr.getString

рабочий код выглядит так:

Dim hurr as Object
Dim durr as String

hurr = CreateObject("COM Object")
durr = hurr.getString()

Приведенный выше код дал мне исключение приведения и по какой-то причине для работы здесь нужны скобки. Я просто добавлю, что работа с поздними связывающими com-объектами ужасна и ее следует избегать любой ценой.

...