Переменная с несколькими типами - PullRequest
0 голосов
/ 29 мая 2020

За пару лет я создал go несколько таблиц Excel, в которых есть макросы VBA с использованием стороннего API.

Этот API был обновлен, но изменения настолько незначительны, что единственное, что изменилось в моих таблицах есть несколько типов переменных.

Старая версия использовала эти типы переменных:

Dim ETABSObject As ETABS2016.cOAPI Dim SapModel As ETABS2016.cSapModel<br> Set ETABSObject = GetObject(, "CSI.ETABS.API.ETABSObject") Set SapModel = ETABSObject.SapModel

В то время как новая версия использует эти типы:

Dim ETABSObject As ETABSv17.cOAPI Dim SapModel As ETABSv17.cSapModel<br> Set ETABSObject = GetObject(, "CSI.ETABS.API.ETABSObject") Set SapModel = ETABSObject.SapModel

Это буквально единственное, что меняется для меня, замена одного другим позволяет мне использовать мою старую электронную таблицу с новым API.

Вот моя проблема : программное обеспечение, которое использовало старый API (ETABS16), все еще используется, и я хотел бы избежать дублирования всех моих электронных таблиц (создание версии для ETABS2016 и одной для ETABSv17).

переменная SapModel широко используется во всем коде, поэтому наличие переменных SapModel16 и SapModel17 здесь не вариант.

Есть ли способ объявить SapModel таким образом что он будет работать для обеих версий API?

Я попытался объявить его как Variant, а затем либо установить его как ETABSObject2016.SapModel, либо ETABSObjectv17.SapModel, используя on error GoTo, но это не сработало . on error Goto смог определить, какая из двух версий API использовалась, но таблица зависала при первом использовании SapModel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...